问题描述
我正在尝试将DirectShowLib移植为.NET Standard。在.NET Framework 4.6.2中将Xml2Dex
转换为IXml2Dex
接口时,我没有问题。但是,我在.NET Core 3.1中拥有InvalidCastException
。
COM导入
[ComImport,SuppressUnmanagedCodeSecurity,InterfaceType(ComInterfaceType.InterfaceIsDual),Guid("18C628ED-962A-11D2-8D08-00A0C9441E20")]
public interface IXml2Dex
{
// Interface implementation..
}
[ComImport,Guid("18C628EE-962A-11D2-8D08-00A0C9441E20")]
public class Xml2Dex
{
}
测试
// works on .NET Framework 4.6.2,Failed on .NET Core 3.1
object xml2Dex = (IXml2Dex) new Xml2Dex();
Assert.IsTrue(xml2Dex is IXml2Dex);
异常
无法将类型'DirectShowLib.DES.Xml2Dex'的COM对象转换为接口类型 'DirectShowLib.DES.IXml2Dex'。该操作失败,因为 IID接口的COM组件上的QueryInterface调用 “ {18C628ED-962A-11D2-8D08-00A0C9441E20}”由于以下原因而失败 错误:不支持此类接口(0x80004002(E_NOINTERFACE))。
以STAThread
模式运行测试确实可以解决该问题。但是,为什么它可以在.NET Framework上不使用单线程模式运行呢?我做错什么了吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)