Вы прочитали соответствующие документы? 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 со стандартным конструктором и переадресует ваши вызовы через это.
«класс-оболочка» - это то, что я пытаюсь избавиться, спасибо в любом случае. – Star