2013-07-20 54 views
0

我試圖創建System.Security.Cryptography.Rfc2898DeriveBytes在PHP
反對我這麼寫:無法創建COM對象Rfc2898DeriveBytes

$obj = new COM('System.Security.Cryptography.Rfc2898DeriveBytes'); 

但我得到:

Fatal error: Uncaught exception ‘com_exception’ with message ‘Failed to create COM object `System.Security.Cryptography.Rfc2898DeriveBytes’: Invalid syntax

什麼這段代碼有錯嗎?

回答

0

您是否閱讀過相關文檔? PHP

The COM class allows you to instantiate an OLE compatible COM object...

什麼讓你覺得System.Security.Cryptography.Rfc2898DeriveBytes是OLE兼容COM類型?事實並非如此。

這是一個.NET託管類。儘管它帶有ComVisible屬性,但這並不會使其成爲可使用COM實例化的OLE兼容COM類型。特別是,它沒有默認的構造函數,所以當.NET程序集註冊到COM時生成COM類型庫中的it is mapped to a noncreateable coclass。因此無法使用任何基於COM的機制實例化 - 只能通過託管代碼調用其構造函數之一。除此之外,其命名空間限定的名稱太長而不能成爲COM ProgId。

如果你想通過PHP COM類來利用這個.NET類,你可以在.NET託管代碼中編寫一個與OLE兼容的包裝類,以及帶默認構造函數的ComVisible,並通過它轉發你的調用。

+0

「包裝類」是我試圖擺脫的東西,無論如何。 – Star