0

我有 100 种方法

    public void function1() {}
    public void function2() {}
    ....
    public void function100() {}

问题是我如何调用这些函数而不一一调用它们?或者我如何从字符串中调用函数,例如:

    string S = "TheFunction"+x.Tostring()+"()";
4

2 回答 2

0

你的方法在什么类?您可以像这样获取类中的方法数组:

MethodInfo[] methods = typeof(YourClassNameHere).GetMethods();

然后你可以循环和调用:

String baseName = "function";
foreach(var item in methods) {
   //Check name
    if (item.Name.SubString(0, baseName.Length) == baseName) {
       item.Invoke(classInstanceOfYourClass,null);
    }
}

classInstanceOfYourClass是您正在执行此操作的类的对象实例。invoke 的第二个参数(我将其设置为null)用于将参数传递给方法。如果您通过null,则表示该方法没有参数。

于 2015-04-15T01:12:21.493 回答
0

你的问题的答案是反射。您可以查看此答案Reflection: How to Invoke Method with parameters中的代码。

于 2015-04-15T01:14:40.520 回答