Как вызвать метод из библиотеки dll с помощью отражения
dll-файл, содержащий метод, файл проекта, вызывающий метод в dll, исключение и мои выводы приведены ниже, я не понимаю, чего мне не хватает. Пожалуйста, помогите!
DLL-файл:
public class Class2 { public string TestMethod1() { return "hello world!"; } public void TestMethod2(int test) { } }
Проект, в котором вызывается метод в dll:
try { Assembly assembly = Assembly.LoadFrom(@"D:\TestDll.dll"); foreach (Type ti in assembly.GetTypes().Where(x => x.IsClass)) { if (ti.Name == "Class2") { ti.GetMethod("TestMethod2"); MethodInfo[] method = ti.GetMethods(); Type t = assembly.GetType("TestDll.Class2"); BindingFlags flags = BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance; object res = t.InvokeMember("TestMethod2", BindingFlags.InvokeMethod, null, t, new object[0]); } } } catch (Exception ex) { string msg = ex.Message; }
Исключение:
MissingMethodException Occurred<br /> Method 'TestDll.Class2.TestMethod2' not found.
Мои выводы из MethodInfo:
method[1] = {Void TestMethod2(Int32)};<br /> method[1].Name = TestMethod2
Если я изменяю последний параметр т. е. входные параметры возникает следующая ошибка
Исключение:
TargetException Occurred<br /> Object does not match target type.