정적 이벤트가 상당히 좋아 보이는 상황이 있지만 다른 사람들의 코드에서 볼 수없는 경우가있어서 중요한 것을 놓치고 있는지 궁금합니다. 이 사이트의 정적 이벤트에 대한 많은 토론을 발견했지만, 대부분 정적 클래스와 같이 관심이없는 상황이나 처음부터 사용하지 않을 상황을 처리합니다.비 정적 클래스의 정적 이벤트
내가 관심있는 내용은 내가 무언가의 많은 인스턴스와 그 인스턴스의 무언가에 반응하는 긴 "매니저"객체의 단일 인스턴스를 가질 수있는 상황입니다. 나에게
public class God {
//the list of followers is really big and changes all the time,
//it seems like a waste of time to
//register/unregister events for each and every one...
readonly List<Believer> Believers = new List<Believer>();
God() {
//...so instead let's have a static event and listen to that
Believer.Prayed += this.Believer_Prayed;
}
void Believer_Prayed(Believer believer, string prayer) {
//whatever
}
}
public class Believer {
public static event Action<Believer, string> Prayed;
void Pray() {
if (Prayed != null) {
Prayed(this, "can i have stuff, please");
}
}
}
, 이것은 인스턴스 이벤트를하는 것보다 훨씬 깨끗하고 간단한 해결책처럼 보이는 나도 신자 컬렉션에서 변경 사항을 모니터링 할 필요가 없습니다 : 아주 간단한 예를 들어 무슨 뜻인지 설명하기 위해. Believer 클래스가 God 타입 클래스를 "볼"수있는 경우, 때때로 NotifyGodOfPrayer() - 메서드를 대신 사용할 수 있습니다 (몇 가지 비슷한 질문에서 선호되는 대답 임). 그러나 Believer 타입 클래스는 "모델들"- 나는 하나님 클래스에 직접 접근하고 싶지 않거나 직접 접근하고 싶지 않다.
이 접근법에 실제 단점이 있습니까?
편집 : 이미 시간을내어 답변 해 주신 모든 분들께 감사드립니다. 내 예 나쁜 될 수있다, 그래서 나는 내 질문에 명확히하고자 : 나는
- 확실 해요 오직의 하나 개의 인스턴스가있을 것입니다 상황에서 정적 이벤트의 종류를 사용하는 경우
을 응용 프로그램만큼 존재 보장 가입자 객체
- 는
- 내가보고 있어요 인스턴스의 수를 실행하는
다음 일이다 거대하다 내가 알지 못하는이 접근법에 잠재적 인 문제점이 있습니까?
해당 질문에 대한 대답이 "예"가 아니라면 대체로 구현을 찾지 않고 있지만 모두 도움을 주셔서 감사합니다. 나는 가장 예쁜 해결책을 찾고 있지 않다. (간단하고 읽기 쉽고 유지하기 쉽도록 내 상을 주어야한다. :)
가능한 복제본 [정적 이벤트는 C#의 비 정적 이벤트와 어떻게 비교합니까?] (http://stackoverflow.com/questions/7045595/how-do-static-events-compare-to-non-static- events-in-c) –
아마도 그 중 하나의 대답은 본 시나리오에서 유용하지 않습니다. 답변 1 (수락 됨) : "정적 이벤트에 대한 인스턴스를 보내지 않음"- 여기에 해당하지 않습니다. 답변 2 : 구독 취소 문제 - 여기에 해당하지 않습니다. 답변 3 : 정적 방법/클래스 - 관심 없음 답변 4 : 3 사용 정적 이벤트에 대한 사례 - 그 중 아무 것도 내 유스 케이스가 아닙니다. 답변 5 : "정적 이벤트는 완전히 끔찍한 것"입니다. – wilford