Nie można wystrzelić zdarzenia w języku C#, do którego nie są dołączone żadne procedury obsługi. Dlatego przed każdym wywołaniem należy sprawdzić, czy zdarzenie ma wartość zerową.Automatyczne tworzenie pustych programów obsługi zdarzeń w języku C#
if (MyEvent != null) {
MyEvent(param1, param2);
}
Chciałbym zachować mój kod tak czysty, jak to możliwe i pozbyć się tych zerowych kontroli. Nie sądzę, że wpłynie to na wydajność, przynajmniej nie w moim przypadku.
MyEvent(param1, param2);
W tej chwili rozwiązuję ten problem, dodając pusty ręczny komunikat do każdego zdarzenia. To jest podatny na błędy, ponieważ trzeba pamiętać, aby zrobić itp
void Initialize() {
MyEvent += new MyEvent((p1,p2) => { });
}
Czy istnieje sposób, aby generować pustych teleskopowe na wszystkich wydarzeniach z danej klasy automatycznie przy użyciu odbicia i trochę CLR magię?
trick w przyjętym odpowiedź pozwoli uniknąć konieczności sprawdzenia zerowa, ale nie zapewni wątek Safty. zobacz tutaj: http://stackoverflow.com/questions/1131184/c-initializing-an-event-handler-with-a-dummy/1131204#1131204 –