在我的WPF MVVM项目中,我必须一次执行大约10个方法,而不是逐个传递个人名称。假设我可以为单个方法调用执行此操作:
CallStaticMethod("MainApplication.Test", "Test1");
它的身体:
public static void CallStaticMethod(string typeName, string methodName)
{
var type = Type.GetType(typeName);
if (type != null)
{
var method = type.GetMethod(methodName);
if (method != null)
{
method.Invoke(null, null);
}
}
}
public static class Test
{
public static void Test1()
{
Console.WriteLine("Test invoked");
}
}
但我有要求:
public static class Test
{
public static void Test1()
{
Console.WriteLine("Test invoked");
}
public static void Test2()
{
Console.WriteLine("Test invoked");
}
public static void Test3()
{
Console.WriteLine("Test invoked");
}
public static void CallAllTestMethod()
{
Test1();
Test2();
Test3();
}
}
现在我想调用此CallAllTestMethod()
,并且还想知道当前正在处理哪种方法(Test1
,Test2
或Test3
)。有没有想过这个?
答案 0 :(得分:0)
你试图做this。如该线程中所述,这很难做到。
为什么不创建一个被每个测试方法触发的事件?然后,您可以register to those events using reflection。
答案 1 :(得分:0)
您可以使用委托列表:var actions = new List>(); actions.Add(this.GetReports); actions.Add(this.GetUsers); actions.Add(this.GetEmployees);调用它们很容易:foreach(动作中的var动作){action(new [] {“All”}); } var actions = new List(); actions.Add(()=> this.GetReports(new [] {“Foo”})); actions.Add(()=> this.GetUsers(new [] {“Bar”})); //等foreach(动作中的var动作){action(); }