Подписка на событие (INotifyPropertyChanged
или некоторый пользовательский) - это нормально, так же как и способ передачи лямбда-установщика, но в некоторых случаях может быть более удобно использовать объект общего контекста (во многом как общая память). концепция):
class ConversationContext
{
public bool EverythingIsOK { get; set;}
}
Этот объект передается всем заинтересованным объектам (ILogic
и ILogger
), и они воздействуют непосредственно на него, а не на некоторые внутренние свойства. Если требуются уведомления об изменениях, введите INotifyPropertyChanged
на нем.
Один положительный аспект этого подхода заключается в том, что вы не будете запутываться в повторяющихся событиях, запускающих другие события и так далее. Один объект будет содержать текущее состояние, и периодические обновления не требуются.
Опять же, это только один из многих вариантов.