Jak zaimplementować niestandardowe metody dostępu do zdarzeń (Przewodnik programowania w języku C#)
Zdarzenie jest specjalnym rodzajem delegata multiemisji, który można wywołać tylko z poziomu klasy, w jakiej jest zadeklarowany. Kod klienta subskrybuje zdarzenie, podając odwołanie do metody, która powinna być wywoływana po wyzwoleniu zdarzenia. Te metody są dodawane do listy wywołań delegata za pomocą metod dostępu do zdarzeń, które przypominają metody dostępu do właściwości, z tą różnicą, że metody dostępu do zdarzeń są nazwane add
i remove
. W większości przypadków nie trzeba dostarczać niestandardowych metod dostępu do zdarzeń. Jeśli w kodzie nie podano żadnych niestandardowych metod dostępu do zdarzeń, kompilator doda je automatycznie. Jednak w niektórych przypadkach może być konieczne zapewnienie zachowania niestandardowego. Jeden z takich przypadków jest pokazany w temacie How to implement interface events (Jak zaimplementować zdarzenia interfejsu).
Przykład
W poniższym przykładzie pokazano, jak zaimplementować niestandardowe metody dostępu do dodawania i usuwania zdarzeń. Mimo że można zastąpić dowolny kod wewnątrz metod dostępu, zalecamy zablokowanie zdarzenia przed dodaniem lub usunięciem nowej metody obsługi zdarzeń.
event EventHandler IDrawingObject.OnDraw
{
add
{
lock (objectLock)
{
PreDrawEvent += value;
}
}
remove
{
lock (objectLock)
{
PreDrawEvent -= value;
}
}
}