Вызов методов из управляемого dll объекта C ++ - PullRequest
0 голосов
/ 19 мая 2011

Я загружаю свою DLL в C # с помощью

Assembly assembly = Assembly.LoadFrom(dllPath); // late binding
Type classType = assembly.GetType("Namespace.Classname"); 
object readerInterface = Activator.CreateInstance(classType);

, но как мне получить доступ к моим методам / членам в readerInterface без

type.InvokeMember("Methodname", BindingFlags.InvokeMethod |             
    BindingFlags.Instance | BindingFlags.Public, null, readerInterface, null);

-> в форме readerInterface.write();???

Большое спасибо!

привет leon22

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

при условии, что вы не можете просто ссылаться на сборку в своем проекте C # ... заставить объект C ++ / CLI реализовать интерфейс и привести его к этому интерфейсу, а затем просто использовать его как обычно.

1) объявите ваш интерфейс в C #, используя любые подходящие методы

public interface IFoo
{
    SomeMethod()
}

2) Реализуйте интерфейс на вашем объекте C ++ / CLI

3) приведите объект, который высозданный через отражение в этом интерфейсе

object readerInterface = Activator.CreateInstance(classType);
IFoo myFoo = readerInterfces as IFoo;
0 голосов
/ 19 мая 2011

В c # 3 вы должны использовать отражение или иметь объект, реализующий известный интерфейс.

В C # 4 вы можете использовать динамический вместо. (будет по-прежнему использовать отражение, но с более приятным синтаксисом)

...