.NET Core中不支持此类接口0x80004002 COM导入异常

问题描述

我正在尝试将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 (将#修改为@)