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