我正在开发一个用 C# 编写的 Windows 运行时组件,以包装一些没有 Windows 运行时等效项的 COM 接口,遵循这个使用 mbnapi.tlb 提供的互操作接口的MSDN 示例。当我尝试在包装类的构造函数中实例化我的 IMbnInterfaceManager 成员时,如下所示:
m_InterfaceManager = (IMbnInterfaceManager)new MbnInterfaceManager();
由于 E_NOINTERFACE(不支持此类接口),它会引发 System.InvalidCastException。
但是,如果我将包装器构建为类库而不是 WinMD 组件,它可以正常工作,没有其他更改。
我更愿意将其构建为 Windows 运行时组件,以免限制库的有用性。(至少有一个项目是用 Javascript/HTML 编写的。)我做错了什么,还是我试图做的事情不可能?
编辑:原来这是 .NET 4.5 RC 中的一个错误。把这个问题留在这里,以防其他人遇到这个问题,如果我找到一个解决方法,我会发布。据说它将由RTM修复。