在C#类中运行所有方法

时间:2016-08-23 18:51:19

标签: c# .net

我有一个有200多个功能的课程。我需要一个函数来运行类中的所有方法。

所有函数都返回void,并且不带任何参数。

这就是我目前所拥有的:

public void runAllFunctions()
{
        var methods = typeof(win10).GetMethods(BindingFlags.Public | BindingFlags.Instance);
        object[] parameters = null;
        foreach (var method in methods)
        {
            if (method.Name.StartsWith("WN10"))
            {
                method.Invoke(null, parameters);
            }
        }
    }

使用此代码,我收到错误“非静态方法需要目标”

如何运行所有方法?

2 个答案:

答案 0 :(得分:7)

您必须提供win10 class 实例;如果runAllFunctionswin10的方法:

  public void runAllFunctions() {
    var methods = GetType()
      .GetMethods(BindingFlags.Public | BindingFlags.Instance)
      .Where(item => item.Name.StartsWith("WN10"));

    foreach (var method in methods)
      method.Invoke(this, new Object[0]); // please, notice "this"
  }  

如果runAllFunctions 不是 win10的方法:

  public void runAllFunctions() {
    win10 instance = new win10(); //TODO: put right constructor here

    var methods = instance
      .GetType()
      .GetMethods(BindingFlags.Public | BindingFlags.Instance)
      .Where(item => item.Name.StartsWith("WN10"));

    foreach (var method in methods)
      method.Invoke(instance, new Object[0]);
  }  

答案 1 :(得分:5)

首先创建一个

类型的实例
win10 instance = new win10();

然后在你的循环中使用它

method.Invoke(instance , parameters);