Udostępnij za pośrednictwem


CA1009: Należy poprawnie zadeklarować obsługę zdarzenia

Pozycja Wartość
Ruleid CA1009
Kategoria Microsoft.Design
Zmiana powodująca niezgodność Kluczowa

Przyczyna

Delegat, który obsługuje zdarzenie publiczne lub chronione, nie ma poprawnego podpisu, zwracanego typu ani nazw parametrów.

Uwaga

Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.

Opis reguły

Metody obsługi zdarzeń przyjmują dwa parametry. Pierwszy jest typu System.Object i nosi nazwę "nadawca". Jest to obiekt, który wywołał zdarzenie. Drugi parametr jest typu System.EventArgs i nosi nazwę "e". To dane, które są skojarzone ze zdarzeniem. Jeśli na przykład zdarzenie jest zgłaszane za każdym razem, gdy plik zostanie otwarty, dane zdarzenia zwykle zawierają nazwę pliku.

Metody obsługi zdarzeń nie powinny zwracać wartości. W języku programowania C# jest to wskazywane przez zwracany typ void. Procedura obsługi zdarzeń może wywoływać wiele metod w wielu obiektach. Gdyby metody mogły zwrócić wartość, dla każdego zdarzenia wystąpiłoby wiele zwracanych wartości, a tylko wartość ostatniej metody, która została wywołana, byłaby dostępna.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, popraw podpis, typ zwracany lub nazwy parametrów delegata. Aby uzyskać szczegółowe informacje, zobacz poniższy przykład.

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń dla tej reguły.

Przykład

W poniższym przykładzie pokazano delegata, który jest odpowiedni do obsługi zdarzeń. Metody, które mogą być wywoływane przez tę procedurę obsługi zdarzeń, są zgodne z podpisem określonym w wytycznych dotyczących projektowania. AlarmEventHandler to nazwa typu delegata. AlarmEventArgs pochodzi z klasy bazowej dla danych zdarzeń, EventArgsi przechowuje dane zdarzenia alarmu.

using System;

namespace DesignLibrary
{
   public class AlarmEventArgs : EventArgs {}
   public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
}

CA2109: Przejrzyj widoczne procedury obsługi zdarzeń

Zobacz też