0

我正在尝试在 php 中创建 System.Security.Cryptography.Rfc2898DeriveBytes 对象,
所以我写道:

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

但我得到了:

致命错误:未捕获的异常 'com_exception' 带有消息'无法创建 COM 对象'System.Security.Cryptography.Rfc2898DeriveBytes':语法无效

这段代码有什么问题?

4

1 回答 1

0

您是否阅读了相关文档? PHP

COM 类允许您实例化与 OLE 兼容的 COM 对象...

是什么让您认为System.Security.Cryptography.Rfc2898DeriveBytes是兼容 OLE 的 COM 类型?它不是。

它是一个 .NET 托管类。尽管它带有该ComVisible属性,但这并不能使它成为与 OLE 兼容的 COM 类型,您可以使用 COM 对其进行实例化。特别是,它没有默认构造函数,因此它被映射到当 .NET 程序集向 COM 注册时生成的 COM 类型库中的不可创建的 coclass 因此,它不能使用任何基于 COM 的机制来实例化——只能通过托管代码调用其构造函数之一。除此之外,它的命名空间限定名称太长而不能成为 COM ProgId。

如果你想通过 PHP COM 类利用这个 .NET 类,你可以在 .NET 托管代码中编写一个包装类,该类与 OLE 兼容并且具有默认构造函数的 ComVisible,并通过它转发你的调用。

于 2013-07-21T23:20:11.377 回答