1

Method1、Method2などの名前で呼び出したいメソッドのリストがあります。その番号を入力してから同等のメソッドを呼び出す方法はありますか?代表者は頭に浮かぶことの1つです。これは機能しますか?

4

1 に答える 1

6

リフレクションを使用できます:

MyClass myObj = ...;
var method = typeof(MyClass).GetMethod("Method"+num);
var res = method.Invoke(myObj, new object[] {arg1, arg2});

デリゲートの辞書を使用することもできます。

var byNumber = new Dictionary<int,Func<MyClass,int>> {
    {1, (c) => c.Method1()}
,   {2, (c) => c.Method2()}
,   {3, (c) => c.Method3()}
};

var res = byNumber[1](myObj);
于 2012-06-27T01:35:45.890 に答える