我以以下方式使用反射:a)加载程序集 b)获取所有方法及其各自的参数 c)调用方法
调用将输入类型作为原始数据类型(int、double、string 等)的方法时没有遇到问题我尝试以 2 种方式调用该方法:
(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 data),其中 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
}
}
我试图通过反射调用这个客户类的所有方法。还有一个类测试:
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 中的方法如前所述抛出异常。请建议。