C # COM-сервер и клиент не работают с InvalidCastException - PullRequest
0 голосов
/ 24 мая 2018

Это C # Com Server (зарегистрирован с 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?

...