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);
}
Powiązane reguły
CA2109: Przejrzyj widoczne procedury obsługi zdarzeń
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla