Я пытаюсь загрузить функцию в dll. Длл загружается, но только на месте вызова функции, я получаю исключениеНезначительное совпадение найдено при доступе к dll
Неоднозначный матч найденную
Вот фрагмент кода.
Assembly dll = Assembly.LoadFrom(DLLPATH);
if (dll != null)
{
Type Tp = dll.GetType("ABCD.FooClass");
if (Tp != null)
{
Object obj = Activator.CreateInstance(Tp);
if (obj != null)
{
List = (List<String>)obj.GetType().GetMethod("Foo").Invoke(obj, null);
}
else
{
Console.WriteLine("obj is null");
}
}
Console.WriteLine("Type is null");
}
else
Console.WriteLine("Dll is not loaded");
Console.ReadKey();
Метод, который я называю (т.е. Foo
) не принимает никаких параметров и это перегруженный метод. Это место, где я ошибаюсь или это другое место?
Есть ли другой способ вызвать такие методы, которые не принимают никаких параметров? Я попробовал решение, размещенное here, но оно не работает.
Пример кода без всякой нагрузки LoadLibrary/CreateInstance, скорее всего, продемонстрирует проблему более четко - попробуйте сделать простой пример с упрощенным «FooClass» и вызвать Invoke. (при условии, что вы получите там исключение). –
Вы загружали сборку несколько раз? – Oliver
@Oliver: Я загружаю сборку только один раз. –