尝试将COM类强制转换为接口时出现“ InvalidCastException”

问题描述

我用C#写了一个非常简单的DLL,看起来像这样:

[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")]
[ComVisible(true)]
public interface IComClass1
{
    void Do();
}

[Guid("0D53A3E8-E51A-49C7-944E-E72A2064F933"),ProgId("MyComProgId"),ComVisible(true)]
public class ComClass1 : IComClass1
{
    void IComClass1.Do()
    {
        System.Windows.Forms.MessageBox.Show("ComClass1 ^^^^^ Test");
    }
}

我的客户端看起来像这样:

[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")]
public interface IComClass1
{
    void Do();
}

class Program
{
    static void Main(string[] args)
    {
        var type = Type.GetTypeFromProgID("MyComProgId");
        var com = (IComClass1)Activator.CreateInstance(type); // ERROR: System.InvalidCastException
        com.Do();
    }
}

由于某种原因,这里有一个错误:InvalidCastException

为什么会发生错误?我错了吗?以及我该如何解决?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)