Я использую Reflection следующим образом: а) загрузка сборки б) получение всех методов и их соответствующих параметров в) вызов методов
При вызове методов, которые принимают тип ввода как примитивные типы данных (int, double, string и т. Д.), Проблем не возникает. Я пробовал вызвать метод двумя способами:
(object)method.Invoke(obj,respar);
где respar - массив входных параметров
object cu = Activator.CreateInstance(typeof(Customer)) as Customer;
respar.SetValue(cu, i);//i = index
и
(object)type.InvokeMember(methodName, BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Default,null, obj, respar);
Где
object obj = Activator.CreateInstance(type,true);//obj
В первом случае я получаю ошибку исключения аргумента, а во втором - исключение "Метод не найден".
Например, если я вызываю метод GetCustomer (данные клиента), где Customer - это класс, возникают указанные выше ошибки.
Объясню подробно: есть один класс CustomerModel.
public class CustomerModel
{
public string FirstName{get;set;}
public string LastName {get;set;}
}
И класс клиентов
public class Customer
{
public CustomerModel GetCustomerDetails(CustomerTable tableobj)
{
//TODO: Get customer details from tableobj and pass to CustomerModel Obj
}
}
Я пытаюсь вызвать все методы этого класса клиентов через отражение. Есть еще один класс Test:
public class Test
{
public void GetAllMethodsInassembly()
{
//Load assembly
//Get all classes
// Foreach Class=> get all methods
//Invoke each method => get result and store in XML file
}
}
Метод в Customer GetCustomerDetails, который, как упоминалось, выдает исключение. Пожалуйста, предложите.
code
Assembly assembly = Assembly.LoadFile (‹путь к dll›); foreach (Тип типа в сборке.GetTypes ()) {if (type.IsClass) {MethodInfo method = type.GetMethod (methodName); Да Динамическая загрузка сборки с использованием отражения - person Pragya   schedule 20.06.2014