странная проблема с отражением и статическим методом - PullRequest
0 голосов
/ 14 декабря 2010

Visual Studio 2008 - framework 3.5 - Visual Basic

Привет!У меня проблема со статическим методом, вызванным отражением.При загрузке моего win-wpf я создаю копию «A4Library.dll» с именем «_temp.dll» в том же каталоге оригинала.Затем, при нажатии кнопки, я вызываю статический метод для _temp.dll следующим образом:

Dim AssemblyFileName As String = Directory.GetCurrentDirectory() & "\_temp.dll"
Dim oAssembly As Assembly = Assembly.LoadFrom(AssemblyFileName)
Dim TypeName As String = "MyLibrary.MyService"
Dim t As Type = oAssembly.GetType(TypeName)
Dim mi As MethodInfo = t.GetMethod("MyMethod", BindingFlags.Static AndAlso BindingFlags.Public)
Dim bResponse As Boolean = mi.Invoke(Nothing, New Object() {MyPar1, MyPar2})

Но это работает хорошо, только если файл .exe не находится в том же каталогефайлы .dll, в противном случае я получаю эту ошибку (в переводе):

InnerException {"Приведение невозможного [A] MyType в [B] MyType. Тип A происходит из ... в контексте" По умолчанию "'в позиции' F: \ MyPath \ A4Library.dll '. Тип B происходит от ... в контексте' LoadFrom 'в позиции' F: \ MyPath_temp.dll '. "}

Это странно: кажется, что конфликт с тем же методом в оригинальном .dll конфликтует, но я не могу понять, почему он смотрит на оригинал, а не на копию.Если файл .exe, относящийся к основной сборке, помещен в другой каталог, все работает нормально.

Я хочу, чтобы файл .exe находился в той же папке .dll, как я могу решить проблему?

Спасибо!Pileggi

1 Ответ

1 голос
/ 14 декабря 2010

Зачем создавать копию сборки перед выполнением статического метода?Если необходимо создать копию, загрузите эту сборку в другой AppDomain и выполните там метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...