2013-07-20 3 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, это не делает его совместимым с OLE COM-типом, который вы можете создать с помощью COM. В частности, он не имеет конструктора по умолчанию, поэтому it is mapped to a noncreateable coclass в библиотеке COM-типа, сгенерированной, когда сборка .NET зарегистрирована в COM. Следовательно, он не может быть создан с использованием любого COM-механизма - только управляемым кодом, вызывающим один из его конструкторов. Помимо того, что его имя с именем пространства слишком длинное, чтобы быть COM-ProgId.

Если вы хотите использовать этот класс .NET через PHP-класс COM, вы можете написать класс оболочки в управляемом коде .NET, который совместим с OLE, а также ComVisible со стандартным конструктором и переадресует ваши вызовы через это.

+0

«класс-оболочка» - это то, что я пытаюсь избавиться, спасибо в любом случае. – Star

Смежные вопросы