运行c#类中的所有方法

本文关键字:有方法 运行 | 更新日期: 2023-09-27 18:03:43

我有一个超过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);
            }
        }
    }
使用这段代码,我得到错误"非静态方法需要一个目标"

我如何运行所有的方法?

运行c#类中的所有方法

您必须提供win10实例;如果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]);
  }  

首先创建一个类型为

的实例
win10 instance = new win10();

然后在循环中使用

method.Invoke(instance , parameters);