Подписаться на все события из совокупности - PullRequest
0 голосов
/ 13 ноября 2018

Я использую платформу 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Обработчик сброса:

...