PropertyChanged.Fody – interceptory

W poprzednich wpisach przedstawiłem podstawy biblioteki PropertyChanged.Fody oraz atrybuty, które ona udostępnia. Dzisiaj chciałbym opisać kolejną funkcjonalność, jaką są interceptory.  Jest to przydatna funkcja, która pozwala nam wstrzyknąć własny kod, który chcemy aby został wykonany podczas notyfikacji o zmianie właściwości. W ramach przykładu stwórzmy prostą klasę implementującą INotifyPropertyChanged:

Wyobraźmy sobie teraz, że chcemy aby podczas zmiany wartości nastąpiło logowanie o tym zdarzeniu. Możemy to osiągnąć tworząc statyczną klasę o nazwie PropertyChangedNotificationInterceptor z metodą Intercept:

Przyjmuje ona następujące argumenty:

  • target – obiekt, na którym dokonano zmiany,
  • onPropertyChangedAction – delegat, który posłuży do wywołania OnPropertyChanged,
  • propertyName – nazwa właściwości, która jest zmieniania,
  • before – wartość obiektu przed zmianą,
  • after – wartość obiektu po zmianie.

Fody wygeneruje następujący kod:

Dzięki interceptorowi mamy możliwość wykonania własnego kodu przed i po notyfikacji o zmianie właściwości. Możemy dzięki temu dodać do naszej aplikacji logowanie lub wykonać kod w wątku UI. Intercepcje pozwalają także na dodanie dodatkowej logiki podczas zmiany właściwości i  tym samym możliwość niepowiadamiania o zmianie w konkretnych przypadkach. Jak zawsze zachęcam do poeksperymentowania z biblioteką.

Facebooktwitter

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *