函数字典没有指定参数

时间:2014-04-14 15:27:37

标签: c# dictionary

我有一个字典,它使用字符串作为键,Action函数作为值。

有没有办法在不指定每个键功能的参数的情况下定义字典?例如,假设我有一个函数foo(int a, string b)。是否可以指定dict['test'] = foo

如果已经提出这个问题我很抱歉 - 我不知道该搜索什么。

1 个答案:

答案 0 :(得分:3)

是的,使用Delegate而不是键入的函数。您将使用DynamicInvoke()调用它们,并且可以使用数组传递参数。简而言之:

Dictionary<string, Delegate>() _delegates;

void Test1(int a) { }
void Test2(int a, int b) { }

void SetUp() {
    _delegates = new Dictionary<string, Delegate>();
    _delegates.Add("test1", Test1);
    _delegates.Add("test2", Test2);
}

void CallIt(string name, params object[] args) {
    _delegates[name].DynamicInvoke(args);
}

试一试:

CallIt("test1", 1);
CallIt("test2", 1, 2);