0

在我的 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对此有什么想法吗?

4

2 回答 2

0

你有点尝试这样。正如该线程中所述,这样做非常困难。

为什么不创建一个由每个测试方法触发的事件?然后,您可以使用反射注册这些事件

于 2013-09-05T08:52:31.313 回答
0

您可以使用代表列表: var actions = new List>(); actions.Add(this.GetReports); actions.Add(this.GetUsers); actions.Add(this.GetEmployees); 并且调用它们很容易: foreach (var action in actions) { action(new[] { "All" }); } var actions = new List(); actions.Add(() => this.GetReports(new[] { "Foo" })); actions.Add(() => this.GetUsers(new[] { "Bar" })); // etc foreach (var action in actions) { action(); }

于 2013-09-06T06:43:08.537 回答