首页 > 解决方案 > C# COM 服务器和客户端因 InvalidCastException 而失败

问题描述

这是 C# Com 服务器(向 Regasm 注册):

[ComVisible(true), Guid("565D8202-6C0F-4AAB-B0F6-49719CD13045"),
InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface ITestObject
{
    void DoSomething();
}

[ComVisible(true), GuidAttribute("21293767-A713-49E2-968E-7DDE0B0DAB94"),
    ClassInterface(ClassInterfaceType.None)
]
public class TestObject : ITestObject
{
    public void DoSomething()
    {
    }
}

这是 C# COM 客户端:

[ComImport(), Guid("565D8202-6C0F-4AAB-B0F6-49719CD13045"),
    InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ITestObject
{
    [PreserveSig]
    void DoSomething();
}

这就是问题所在:

Type type = Type.GetTypeFromCLSID(new Guid("21293767-A713-49E2-968E-7DDE0B0DAB94"));
object o = Activator.CreateInstance(type);
ITestObject t = (ITestObject)o;

转换为 ITestObject 失败并出现 InvalidCastException。但是可以将方法 DoSomething() 调用为动态 C# 对象。

有谁知道如何解决 InvalidCastException?

标签: c#servercomclient

解决方案


推荐阅读