他们是否在c#中将变量实例化为方法调用而不使用switch语句。
答案 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 + " ");
}
}