На самом базовом уровне вы можете создать событие в своем классе:
public delegate void MyHandler(bool b);
public event MyHandler CommittedChanged;
Теперь люди могут подписаться на ваше мероприятие так:
public void SomeHandlerMethod(bool b) { ... }
...
someInstance.CommittedChanged += SomeHandlerMethod;
someInstance.CommittedChanged += ASecondHandlerMethod;
someInstance.CommittedChanged += x => { /* inline handler using lambda */ };
Пользователь может отменить регистрацию своего обработчика событий следующим образом:
someInstance.CommittedChanged -= SomeHandlerMethod;
И где бы вы ни решили изменить свою переменную, вы будете следовать ей:
if (CommittedChanged != null) CommittedChanged(_isCommitted);
Это вызовет всех, кто зарегистрировал функцию с вашим событием.
Сказав это, вы можете сделать множество улучшений. Сначала сделайте _isCommitted в свойстве и выполните обратный вызов события в его установщике. Таким образом, вы не забудете вызвать обработчики.
public IsCommitted {
get { return _isCommitted; }
set {
_isCommitted = value;
if (CommittedChanged != null) CommittedChanged(_isCommitted);
}
}
Подробнее о событиях здесь .
Этого достаточно, чтобы вы пошли. Однако, если вы углубитесь в среду C #, вы найдете стандартизированный способ использования этой структуры событий внутри пространства имен System.ComponentModel
. К счастью, интерфейс INotifyPropertyChanged
, который аккуратно связан с более общей системой событий, которая также хорошо работает с некоторыми из собственных технологий Microsoft, такими как WPF, позволяет элементам графического интерфейса автоматически отслеживать изменения в вашем классе. Подробнее о INotifyPropertyChanged
здесь .