有没有办法在运行时在c#中指定方法

Arl*_*ler 1 c#

我有一个我想要调用的方法列表,名为Method1,Method2,等等.有没有办法可以输入该数字,然后调用等效方法?代表们是我想到的一件事.这会有用吗?

das*_*ght 6

你可以使用反射:

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

您还可以使用代理词典:

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);
Run Code Online (Sandbox Code Playgroud)