繼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#規範對此有何評論?