0

私の WPF MVVM プロジェクトでは、個々の名前を 1 つずつ渡さずに、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()メソッド ( Test1Test2または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 アクション = 新しい List(); actions.Add(() => this.GetReports(new[] { "Foo" })); actions.Add(() => this.GetUsers(new[] { "バー" })); // etc foreach (var action in actions) { action(); }

于 2013-09-06T06:43:08.537 に答える