2011-02-08 3 views
0

을 생성자에 전달 대표자 :이론 : 그래서 이런 일이 가능하다면 궁금

내가 프로그램을 오전, 난 내 개체 중 하나의 인스턴스를 생성하려고입니다. 모든 구독자가 객체를 만들려고한다는 것을 알리는 이벤트를 시작합니다. 이 이벤트의 일부로 나는 나중에 객체의 생성자에 전달할 Hashtable을 전달합니다.

그러면 구독자는이 Hashtable을 수정할 수 있습니까? 해당 유형의 대리자를 값으로 사용하여 대리자 형식의 항목을 추가 할 수 있습니까? 가입자가 사업을 마치면 사전 생성 이벤트가 완료됩니다. Hashtable에 대한 변경 사항이 이벤트를 발생시킨 객체에 표시됩니까? 그래서이 Hashtable이 객체의 생성자에 전달되면 그 객체는 외부 소스의 메소드를 포함 할 수 있습니다. 그래서 본질적으로

-

이동 같은 유형의 위임이있는 경우 자신의 위치에 해시 테이블에서 방법을 사용하여 객체
객체의 생성자에서 이벤트에 의해 수정 된 객체
화재 요청 위임 이벤트
사용 위임 해시 테이블을 만들 수 있습니다
개체가 표준 함수에서 사용자 지정 코드를 실행합니다.

다시 말하지만 내가 말하는 것은 심지어 가능하거나 이해할 수 있습니다.

+0

많은 클라이언트간에 변경 가능한 해시 테이블을 전달할 생각이 없습니다. – ChaosPandion

답변

1

가능하지만 공개적으로 HashSet<T>을 보내는 것을 권장합니다. 그 이유는 가입자가 HashSet<T>의 값을 수정할 수 있기 때문입니다.

대신 이벤트가 올바른 조치 방법이라는 것을 알지 못합니다. 나는 여전히 델리게이트를 사용 하겠지만, 나는 그것들을 이벤트로 드러내지 않을 것이다. pub/sub 패턴이 여기에서 더 나을 수도 있습니다 (알림을 받고자하는 객체가 Sub/Unsub 메소드를 통해 델리게이트를 전달할 것입니다).

위임 기호를 수정하면 HashSet<T>을 전달하는 대신 구현시 데이터 값이 사용자에게 반환됩니다.

그러면 한 번의 호출 대신에 GetInvocationList을 호출하여 각 개별 대리자를 얻을 수 있습니다. 그런 다음 루프 된 후 반환되는 값을 수집합니다.

그런 다음 값을 적절히 집계 한 다음 해당 집계를 개체 생성자에 전달합니다.

+0

기회가 생기 자마자이 문제를 살펴 보겠습니다. – FlyingStreudel

관련 문제