继this article,我已经成功地转换过来的C++ COM类/接口声明成C#这样的:COM互操作界面铸造
[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#规范对此有何评论?