运行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);
}
}
}
使用这段代码,我得到错误"非静态方法需要一个目标"
我如何运行所有的方法?
您必须提供win10
类实例;如果runAllFunctions
是win10
的方法:
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);