C#COM服务器和客户端因InvalidCastException失败

时间:2018-05-24 14:47:36

标签: c# server com client

这是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?

0 个答案:

没有答案