2011-02-02 1 views
0

한 끝점에서 다른 끝점으로 "명령"을 전송하는 클라이언트 - 서버 응용 프로그램에서 작업하고 있습니다. 이 명령을 필수적으로 명령이 들어오는 것처럼 작업을 수행하기 위해 동적으로 생성 할 수있는 클래스 유형의 테이블에 대한 인덱스로 만들겠습니다. 많은 수의 작업자 클래스 (~ 4096 개)에 대한 참조를 저장해야합니다.) 가능한 가장 효율적인 방법으로.정적 클래스 유형의 효율적인 테이블을 저장하고 C#에서 이러한 클래스의 메서드를 동적으로 호출하려면 어떻게해야합니까?

모든 조언을 주시면 감사하겠습니다.

+0

에게 도움이되는 것 비트 자세한 내용을 채우는 시작시 Dictionary<int, Action<T>> 또는 Dictionary<int, Func<T,T>>

을 사용할 수 있습니다. – LukeH

+0

내 제목은 약간 오도하는 것입니다. 예를 들어 파일을 보내거나 일종의 작업을 수행하는 것과 같이 명령이 수령되었을 때 무언가를 수행 할 수있는 많은 수의 정적 클래스에 "참조"를 저장하려고한다고 가정 해보십시오. 내 TCP 메시지에 0x0001이 인덱스를 포함하고 있다고 가정하면이 오프셋과 관련된 클래스를 가져 와서 메서드를 실행하려고합니다. – slashp

+0

명령을 클래스 유형 또는 클래스 인스턴스에 매핑 하시겠습니까? 'Dictionary '당신에게 불만이 있습니까? –

답변

0

, 당신은 사전 MyDict[0x0001] = StaticClass.StaticMethod"

+0

네,이게 내가 찾고있는 것입니다. 지금 이것은 나쁜 아이디어 성능 현명한가? – slashp

+0

@slashp 리플렉션을 사용하는 것만 큼. 테스트하여 성능이 충분한 지 확인하십시오 –

+0

감사합니다! 나는 elses 응답 모두를 평가한다. – slashp

0

을 IMyCommand하고 명령 지수가 오면, 단지합니다 (이 실행 호출

인터페이스 유형의 사전 (키/값 쌍 또는 그냥 간단한 배열)를 사용하여) 인터페이스의 방법 (또는 무엇을 선택 하든지). 물론 이것은 현명한 메모리가 아닐 수도있는 객체를 미리 인스턴스화해야합니다.

그렇지 않으면 정규화 된 형식 이름을 저장하고 리플렉션을 사용하여 해당 형식을 IMyCommand로 인스턴스화 한 다음 Execute() 메서드를 실행합니다.

0

Dictionary<string, ICommand> 또는 비슷한 것을 만들어야합니다.
자세한 내용은 더 자세히 알려주십시오.

매번 새 클래스 인스턴스를 만들어야하는 경우 Dictionary<string, Func<ICommand>>을 사용하십시오. 정적 클래스를 사용하고 있기 때문에

관련 문제