【发布时间】:2011-04-11 13:16:50
【问题描述】:
在this article 之后,我已经成功地将 C++ COM 类/接口声明翻译成 C#,如下所示:
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid(IfaceGuid)]
public interface IFoo
{
void Bar();
}
[ComImport, Guid(ClassGuid)]
public class Foo
{ }
我是这样使用的:
var foo = new Foo();
var ifoo = (IFoo)foo;
ifoo.Bar();
我的问题是,考虑到Foo 没有实现IFoo(即使在运行时,typeof(Foo).GetInterfaces() 是空的)并且禁止用户定义的接口转换,这怎么可能工作?
这是为 COM 保留的一些特殊处理吗? C# 规范对此有何规定?
【问题讨论】:
标签: .net com-interop com-interface