c#字典方法作为值

时间:2013-11-28 07:07:27

标签: c# methods dictionary

我有一个包含大量方法的类,这些方法在调用时会在程序的其他地方传输变量。我想在传输数据的方法和调用它们的方法之间使用字典作为中间人。

所以这是我的问题。假设我创建了一个字典,其中键是int,我希望该值是方法的名称。每次添加到字典时,我都会分配一个新的值/方法。我可以放在那里的价值类型让我这样做吗?

Dictionary<int, ?> methodKey= new Dictionary<int, ?>();

我试图找到字典将要采用的类型列表,但我找不到任何特定的类型。

提前致谢

2 个答案:

答案 0 :(得分:10)

使用任何委托类型作为一种值。例如:

Dictionary<int, Action>

所以,你将能够写出这样的东西:

        dictionary[0] = () => Console.WriteLine("0");
        dictionary[1] = Foo;
        dictionary[2] = a.Bar;

特定的委托类型取决于您的需求 - 可能是,您希望方法具有一些输入参数或输出/返回值,但它应该是最常见的类型。

答案 1 :(得分:0)

所有方法都有相同的签名吗?如果是这样,您可以使用现有的ActionFunc委托之一(或者您可以使用该签名创建委托类型),并将其用作第二个类型参数。

如果没有,您可以使用Delegate(或甚至object)并在调用代理时转换为适当的类型。