Я использую платформу Cirqus (https://github.com/d60/Cirqus) для приложения CQRS / Event Sourced)
Во всех моих реализациях IViewInstance я хотел бы обновлять свойство LastChange (DateTime), когда каждое событиеВ настоящее время я должен обновить это свойство в каждом IViewInstance, обрабатывая его для каждого события следующим образом:
public void Handle(IViewContext context, MyEvent e) {
LastChange = DateTime.Parse(e.Meta["time_utc"]);
//...other code
}
Но это хлопотно, так как я должен повторить это для всех обработчиков событийдля каждого IViewInstance, плюс, если я забуду, свойство LastChange будет неправильным. Существуют и другие данные, которые я мог бы также сохранить в IViewInstance из метаданных событий, например userId и т. д.
Есть ли способобновить это свойство LastChange, не повторяя этот код во всех обработчиках событий?
Я думаю, есть ли способ подписаться на любые события через агрегатор глобальных событий (например,this DomainEvent)
примерно так:
public class MyAggregateView : IViewInstance<InstancePerAggregateRootLocator>,
ISubscribeTo<DomainEvent<MyAggregate> {
//etc...
Затем реализовать "глобальный" eОбработчик сброса: