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]);
}