如何动态选择要执行的方法?

时间:2012-02-20 05:08:07

标签: c# .net c#-4.0 reflection

我想动态选择方法
我有一个20重载的方法,我想动态选择方法
假设我有通用List<MyClass> lst = new List<MyClass>();

class Myclass
{
    String Paraname  {Get; Set;}
    String KeyName {Get; Set;}
    String Border {Get; Set;}
    .... So on
}

lst.add(new Myclass(Paraname="SomePara", KeyName="SomeKey"));
lst.add(new Myclass(Paraname="SomePara", KeyName="SomeKey"));
lst.add(new Myclass(Paraname="SomePara", KeyName="SomeKey", Border="Left"));        

现在我想根据列表中添加的参数动态调用该方法。 感谢。

3 个答案:

答案 0 :(得分:1)

最终,您需要查看列表和每个项目,并有一些标准来决定调用哪种方法。一旦您决定可以这样调用该方法

Type myType = Type.GetType("MyClass");
        ConstructorInfo myConstructor = myType.GetConstructor(Type.EmptyTypes);
        object myClassObject = myConstructor.Invoke(new object[]{});


        MethodInfo myMethod = myType.GetMethod("Method Name");
        object myValue = myMethod.Invoke(myClassObject, new object[]{100});

答案 1 :(得分:0)

你需要利用这个:

MethodInfo.Invoke(...)

以下是:http://msdn.microsoft.com/en-us/library/a89hcwhh.aspx

答案 2 :(得分:-1)

您最好阅读一些关于OOP的文章,并尝试为您的应用构建更友好的架构。那么你所有的问题都会更容易理解 - 与当前不同。