4

文字列をキーとして使用し、メソッドを表すものを使用する辞書が必要です。これらはすべて、値として異なる署名を持つ可能性があります。MethodInfoこの何かから、メソッドが静的でない場合はオブジェクトのインスタンスにアクセスできるはずです。後で名前で見つけて、リフレクションを使用して呼び出すことができます。

Delegateはそうすると思っていましたが、静的メソッドまたはインスタンスメソッドを にキャストする方法が見つかりませんDelegate。オブジェクトと を保持する独自のクラスまたは構造を作成することもできますMethodInfoが、その場合、クラスのユーザーはMethodInfo辞書に追加したいメソッドをオフにする必要があり、Reflectionどこにでも参照を追加する必要があります (おそらくメソッド自体または何かを渡す代わりに(Delegate)myMethod)。これを行う方法はありますか?

4

3 に答える 3

2

ディクショナリに追加するたびにデリゲート型を指定してもかまわない場合は、次を使用できますDelegate

void A() {}
string B(string arg) { return arg; }

void Test()
{
    var dict = new Dictionary<string, Delegate>();

    dict.Add("A", new Action(A));
    dict.Add("B", new Func<string, string>(B));
}
于 2013-07-15T21:58:05.443 に答える