문자열을 키로 사용하고 Action
은 값으로 사용하는 사전이 있습니다.매개 변수를 지정하지 않고 함수 사전
각 키 기능의 매개 변수를 지정하지 않고 사전을 정의하는 방법이 있습니까? 예를 들어 함수가 foo(int a, string b)
이라고 가정 해 보겠습니다. dict['test'] = foo
을 할당 할 수 있습니까?
이 질문에 이미 질문이 있으면 사과드립니다. 무엇을 검색해야할지 모르겠습니다.
문자열을 키로 사용하고 Action
은 값으로 사용하는 사전이 있습니다.매개 변수를 지정하지 않고 함수 사전
각 키 기능의 매개 변수를 지정하지 않고 사전을 정의하는 방법이 있습니까? 예를 들어 함수가 foo(int a, string b)
이라고 가정 해 보겠습니다. dict['test'] = foo
을 할당 할 수 있습니까?
이 질문에 이미 질문이 있으면 사과드립니다. 무엇을 검색해야할지 모르겠습니다.
예, 입력 된 함수 대신 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);
예를 들어 주셔서 감사합니다. 이것이 제가 찾고 있던 것입니다. – rookie
는 DICT [ "시험"] = (A, B) => foo는 가질 수있다 (A, B); 그러나 나는 그것이 당신이 원하는 것이라고 확신하지 못합니다. 그것은 명확하지 않다 – Murdock
서로 다른 매개 변수를 가진 함수를 사전에 나란히 저장하고 싶습니까, 아니면 'dict'이 항상 동질성입니까? 'Dictionary>'는 후자의 경우 (그리고 상황에 따라 일반적인 매개 변수가있는 것이 합리적이라면) 작동해야합니다. –