Вызов метода через отражение вызывает System.MissingMethodException - PullRequest
1 голос
/ 05 декабря 2011

Я загружаю сборку динамически и вызываю статический метод из нее. Проблема возникает, когда метод использует ссылку, которая не является тривиальной (например, mscorlib или System.Core) - я получаю System.MissingMethodException. Я попытался просмотреть ссылочные сборки загруженной сборки и вручную загрузить их все, заставив их загрузить их в домен приложений. Я проверил CurrentDomain.GetAssemblies, сборки загружены.

Ссылка на стороннюю библиотеку, и я знаю, что загружена правильная версия (с CurrentDomain.GetAssemblies).

Что может вызвать эту проблему?

1 Ответ

0 голосов
/ 05 декабря 2011

Какой метод вы используете для вызова этого статического метода?

Я бы использовал:

typeof(YourType).GetMethod("YourMethodName", 
     BindingFlags.Public | BindingFlags.Static).Invoke(null, your_params);

Если по какой-либо причине метод фактически реализован в базовом классе, вам понадобятся:

typeof(YourType).GetMethod("YourMethodName", 
     BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy)
  .Invoke(null, your_params); 

Если метод не является общедоступным, вам нужно будет добавить BindingFlags.NonPublic.

Как вы хотите от внешней сборки, используйте Assembly.GetType() вместо typeof.

...