类空出成字典

时间:2013-08-22 11:17:04

标签: c#

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

我尝试使用:

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

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

2 个答案:

答案 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);
}