按照这篇文章,我已经成功地将 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# 规范对此有何评论?