我有一个字典,它使用字符串作为键,Action
函数作为值。
有没有办法在不指定每个键功能的参数的情况下定义字典?例如,假设我有一个函数foo(int a, string b)
。是否可以指定dict['test'] = foo
?
如果已经提出这个问题我很抱歉 - 我不知道该搜索什么。
答案 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);