public override void Handle(Deposit command) { Contract.Assume(command != null); Contract.Assume(command.Amount > decimal.Zero); var accountAggregate = new AccountAggregateRoot(); var events = accountAggregate.Credit(command.Amount, new CanCreditAccount(CanCreditAccount)); Contract.Assume(Contract.ForAll(events, o => o != null)); _domainEventDispatcher.PublishAll(events); }