我想将某个类中的所有空格插入到Dictionary中,然后创建一个命令加载器。字典的类型为string, command
,其中字符串表示请求的命令。例如,如果string = "stackoverflow"
,则执行void stackOverflow(parameter1, parameter2)
。这怎么可能?
我尝试使用:
public Dictionary<string, Action> Commands = new Dictionary<string, Action>();
但我不认为这是解决问题的正确方法。请帮忙。
答案 0 :(得分:1)
如果我理解正确,你需要这样的东西:
class Test
{
private static void Stack(int n)
{
Console.WriteLine("stack " + n);
}
private static void Main(string[] arg)
{
Dictionary<string, Action<int>> dic = new Dictionary<string, Action<int>>();
dic.Add("stack", (n) => Stack(n));
dic["stack"](10);
}
}
答案 1 :(得分:1)
你可以做到
public Dictionary<string, Delegate> Commands = new Dictionary<string, Delegate>();
然后使用DynamicInvoke()
方法调用它。
像:
Delegate del = Commands["Help"];
del.DynamicInvoke(param1, param2);
我要补充一点,如果你必须传递参数,那么通常你应该知道你有哪些参数......
string cmd = "DoSomething";
Delegate del = Commands["DoSomething"];
if (cmd == "DoSomething")
{
Action<int, int> doSomething = (Action<int, int>)del;
doSomething(1, 2);
}