如何实例化变量以调用方法

时间:2009-11-17 15:23:32

标签: c#-3.0

他们是否在c#中将变量实例化为方法调用而不使用switch语句。

2 个答案:

答案 0 :(得分:4)

听起来你想要一个字符串并使用该字符串来调用对象上的方法,这可以使用reflection来完成,而不需要switch语句。

string methodName = "ToString";
var method = typeof(TypeYourMethodExistsOn).GetMethod(methodName);
method.Invoke(objectInstance, null);

答案 1 :(得分:1)

我也不太清楚。如果您不想使用反射(有时很重),为了使用变量动态调用方法,您可以使用类似于包含委托作为值的集合并调用它们。

我使用极其像字典对象来动态调用基于字符串输入的已知方法。

psuedo代码:

delegate void Del(int i, double j);

class MathClass
{
    static void Main()
    {
        MathClass m = new MathClass();

        // Delegate instantiation using "MultiplyNumbers"
        Del d = m.MultiplyNumbers;
        Hashtable ht = new Hashtable();
        ht.Add("mult", d);

        // Invoke the delegate object.
        System.Console.WriteLine("Invoking the delegate using 'MultiplyNumbers':");
        for (int i = 1; i <= 5; i++)
        {
            ((del) ht("mult"))(i, 2);
        }
    }

    // Declare the associated method.
    void MultiplyNumbers(int m, double n)
    {
        System.Console.Write(m * n + " ");
    }
}