我有一个包含大量方法的类,这些方法在调用时会在程序的其他地方传输变量。我想在传输数据的方法和调用它们的方法之间使用字典作为中间人。
所以这是我的问题。假设我创建了一个字典,其中键是int
,我希望该值是方法的名称。每次添加到字典时,我都会分配一个新的值/方法。我可以放在那里的价值类型让我这样做吗?
Dictionary<int, ?> methodKey= new Dictionary<int, ?>();
我试图找到字典将要采用的类型列表,但我找不到任何特定的类型。
提前致谢
答案 0 :(得分:10)
使用任何委托类型作为一种值。例如:
Dictionary<int, Action>
所以,你将能够写出这样的东西:
dictionary[0] = () => Console.WriteLine("0");
dictionary[1] = Foo;
dictionary[2] = a.Bar;
特定的委托类型取决于您的需求 - 可能是,您希望方法具有一些输入参数或输出/返回值,但它应该是最常见的类型。
答案 1 :(得分:0)
所有方法都有相同的签名吗?如果是这样,您可以使用现有的Action
或Func
委托之一(或者您可以使用该签名创建委托类型),并将其用作第二个类型参数。
如果没有,您可以使用Delegate
(或甚至object
)并在调用代理时转换为适当的类型。