我有一个名为Method1,Method2等的方法列表。有没有办法可以输入该数字,然后调用等效方法?代表们是我想到的一件事。这会有用吗?
答案 0 :(得分: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);