1

我有这种情况:一个具有一些属性的自定义类(客户),如下所示:

public class Customer
{
    public int Handler { get; set; }
    public string Name { get; set; }
}

一个带有 Method 的自定义类,如下所示:

public class CustomerMethods
{
    public static void Insert(Customer customer)
    {
        //Do Something...
    }
}

所以,我将加载一个包含一些信息的文本文件,比如类名、属性名和属性值。但是,真正的问题是,如何在设置 Handler 和 Name 属性的值后从 CustomerMethods 类调用 Insert 方法并将 Customer 类作为参数传递?

哦,我差点忘了,我试图避免使用条件,因为我有 100 多个课程。/o\ Ty all,如果您需要更多信息,请告诉我...

4

2 回答 2

2
typeof(CustomerMethods).GetMethod(SomeName).Invoke(null, new Customer(...))

但是,如果可能,您应该尝试重构您的设计并避免这种情况。

于 2012-01-31T17:59:20.010 回答
1

我只使用这些字符串来调用静态插入方法WindowsFormsApplication1.Form1+CustomerMethods     WindowsFormsApplication1.Form1+Customer     Insert

Type customerMethodsType = Type.GetType("WindowsFormsApplication1.Form1+CustomerMethods");
Type customerType = Type.GetType("WindowsFormsApplication1.Form1+Customer");
object customerObject =  Activator.CreateInstance(customerType);

customerType.GetProperty("Handler").SetValue(customerObject, 3, null);

customerMethodsType.InvokeMember(
    "Insert",
    BindingFlags.Public | BindingFlags.InvokeMethod| BindingFlags.Static,
    null,
    null,
    new object[] { customerObject }
    );
于 2012-01-31T18:18:01.157 回答