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

C# 3.0 如何实例化变量以调用方法,c#-3.0,C# 3.0,在c#中,它们是将变量实例化为方法调用而不使用switch语句的一种方式。听起来好像您想要获取一个字符串并使用该字符串调用对象上的方法,这可以在不需要switch语句的情况下完成 string methodName = "ToString"; var method = typeof(TypeYourMethodExistsOn).GetMethod(methodName); method.Invoke(objectInstance, null); 我也不太清楚。如果不想使用反射(有时很重),可

在c#中,它们是将变量实例化为方法调用而不使用switch语句的一种方式。

听起来好像您想要获取一个字符串并使用该字符串调用对象上的方法,这可以在不需要
switch
语句的情况下完成

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

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

我使用一个非常相似的dictionary对象,根据字符串输入动态调用一个已知的方法

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 + " ");
    }
}
委托无效Del(int i,双j);
数学课
{
静态void Main()
{
MathClass m=新的MathClass();
//使用“multilynumbers”进行委托实例化
Del d=m.MultiplyNumbers;
Hashtable ht=新的Hashtable();
ht.添加(“mult”,d);
//调用委托对象。
System.Console.WriteLine(“使用'multilynumbers':'调用委托”);

对于(int i=1;我不知道你在问什么。你是说像多态性吗?你是在要求像eval一样的功能,当一个函数包含在字符串变量中时,你可以通过它的名称来调用它吗?-1因为没有解释或给出详细信息。我讨厌这类问题!请给我们一个例子,说明你使用开关的意思,我们将我会告诉你,如果没有开关还有其他选择的话。我有时发现很难用文字来表达,因为我正在尝试设计summat。啊,Bob,这是一个快速的答案,我想这正是我想要的。请记住,switch语句可能比使用反射更快。嗯,要调用的每个方法都会提取一个p根据模式,可以提取大约80多个唯一值,这将形成一个大的switch语句,但这仍然比反射更快。