1

我有一个我想调用的方法列表,命名为 Method1、Method2 等。有没有办法我可以输入那个数字然后调用等效的方法?代表是我想到的一件事。这行得通吗?

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 回答