Вызвать собственный код, указанный во время выполнения - PullRequest
0 голосов
/ 12 августа 2010

Я разрабатываю приложение, которое позволит пользователям вызывать внешний код как из управляемых, так и из собственных .dll.Пользователи смогут указать, какую библиотеку / метод / функцию вызывать во время выполнения (она будет храниться в файле конфигурации).

Я знаю, как это сделать, используя pinvoke для собственных библиотек, если я знаю, что dll/ function, которую я хочу вызвать во время компиляции, но я не могу найти никакой информации о том, как это сделать во время выполнения.

По сути, я хотел бы вызвать метод:

int result = ExecuteNativeFunction("someLibrary.dll", "foo");

и пусть он делает что-то эквивалентное:

[DllImport("someLibrary.dll")]
static extern int foo();

...

int result = foo();

1 Ответ

2 голосов
/ 12 августа 2010

Будет ли это то, что вы ищете? Используя System.Reflection.Emit , вы можете динамически компилировать код, который определяет новый метод PInvoke. Подробнее см. Класс DllRegServer в связанном файле .

...