我想要一个托管的com对象,它公开接受作为参数实现给定接口的对象的方法。像这样的东西
[ComVisible(true)]
[Guid(".....")]
class SomeClass {
public void SomeMethod(ISomeInterface arg)
.....
显然ISomeInterface
也应该被宣布为ComVisible
。
现在我想在托管客户端中使用该COM对象并在那里调用SomeMethod
。问题是我需要实例化一个实现ISomeInterface
的对象。如果那是一个本机COM对象,我会自动生成一个interop程序集,这不会有问题。但是,无法为托管COM对象生成互操作程序集。
我看到.NET 4.0引入了类型等价概念。看起来我可以使用ComImport
属性手动生成互操作。但这看起来像一个非常讨厌的工作。我想我也可以使用TypeIdentifierAttribute
但是关于它的文档含糊不清,它说它主要是供编译器使用。
那么有没有其他方法可以做到这一点?