2

我想将某个类中的所有空格插入到字典中,然后制作一个命令加载器。字典的类型为string, command,其中字符串表示请求的命令。例如,如果string = "stackoverflow",则执行void stackOverflow(parameter1, parameter2)。这怎么可能?

我尝试使用:

public Dictionary<string, Action> Commands = new Dictionary<string, Action>();

但我认为这不是解决问题的正确方法。请帮忙。

4

2 回答 2

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);
  }
}
于 2013-08-22T11:21:37.490 回答
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);
}
于 2013-08-22T11:22:02.453 回答