2014-04-14 2 views
4

문자열을 키로 사용하고 Action은 값으로 사용하는 사전이 있습니다.매개 변수를 지정하지 않고 함수 사전

각 키 기능의 매개 변수를 지정하지 않고 사전을 정의하는 방법이 있습니까? 예를 들어 함수가 foo(int a, string b)이라고 가정 해 보겠습니다. dict['test'] = foo을 할당 할 수 있습니까?

이 질문에 이미 질문이 있으면 사과드립니다. 무엇을 검색해야할지 모르겠습니다.

+0

는 DICT [ "시험"] = (A, B) => foo는 가질 수있다 (A, B); 그러나 나는 그것이 당신이 원하는 것이라고 확신하지 못합니다. 그것은 명확하지 않다 – Murdock

+0

서로 다른 매개 변수를 가진 함수를 사전에 나란히 저장하고 싶습니까, 아니면 'dict'이 항상 동질성입니까? 'Dictionary >'는 후자의 경우 (그리고 상황에 따라 일반적인 매개 변수가있는 것이 합리적이라면) 작동해야합니다. –

답변

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); 
+0

예를 들어 주셔서 감사합니다. 이것이 제가 찾고 있던 것입니다. – rookie

관련 문제