无法创建COM对象Rfc2898DeriveBytes

时间:2013-07-20 13:08:34

标签: php .net com

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

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

但我得到了:

  

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

这段代码有什么问题?

1 个答案:

答案 0 :(得分:0)

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

  

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

是什么让你觉得System.Security.Cryptography.Rfc2898DeriveBytes是一个OLE兼容的COM类型?它不是。

这是一个.NET托管类。虽然它带有ComVisible属性,但它不能使它成为OLE兼容的COM类型,您可以使用COM实例化它。特别是,它没有默认构造函数,因此在向COM注册.NET程序集时生成的COM类型库中为it is mapped to a noncreateable coclass。因此,它不能使用任何基于COM的机制进行实例化 - 只能通过托管代码调用其构造函数之一。除此之外,它的名称空间限定名称太长,不能成为COM ProgId。

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