.NET 이벤트 모델에 대한 이해에 상당히 만족합니다. 시스템의 작은 뉘앙스를 오해하고 있다고 생각합니다.
클래스에 이벤트를 넣기 시작했을 때 표준 방식을 사용합니다.
public event EventHandler<MyEventArgs> MyEvent;
즉, 이벤트를 구독하려면 다음과 같은 방법이 필요합니다.
void HandleThatEvent(object sender, MyEventArgs args){...}
어느 것이 좋았지 만 발신자에 대해서는 거의 신경 쓰지 않을 것이므로 많은 메소드 서명이 부풀어 오른 것으로 나타났습니다.
그래서 나는 자신의 델리게이트 유형을 선언하는 것으로 전환
public delegate void MyEventHandler(SomeClass argument);
어느 것이 혼란스럽지 만 처리기를 작성할 때 작은 문제가 생겼습니다.
eventImplmentor.MyEvent += HandleThatEvent;
.
.
.
void HandleThatEvent(/*oh, um, what arguments does it take? Intellisense isn't telling me*/)
그래서 나는 대의원의 선언으로 돌아가서 되돌아 가서 글을 쓰거나 컴파일하고 말을 기다립니다.
이제 대신, 또는 템플릿에 맞는 것을 사용 Action하고 Action<T>있습니다.
public event Action<SomeClass> MyEvent;
이벤트 위로 마우스를 가져 가면 예상되는 매개 변수를 알 수 있습니다.
결국 내 질문 : C #에서 이벤트를 선언하는 가장 좋은 방법이 있습니까? 다시 돌아 가야합니까 EventHandler<T>, 아니면 Action<T>괜찮습니까?