2010-08-11 2 views
0

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

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

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

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

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

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

... 

int result = foo(); 

ответ

2

this Would быть то, что вы ищете? Используя System.Reflection.Emit, вы можете динамически компилировать код, который определяет новый метод PInvoke. См. Класс DllRegServer в linked file.

+0

Это то, что я ищу, хотя я надеялся, что смогу избежать Reflection.Emit. –

Смежные вопросы