Task<TQuery, TQueryResult> DispatchAsync<TQueryResult>(TQuery query)
where TQuery : class, IQuery<TQueryResult>
where TQueryResult : IQueryResult;
should become:
Task<TQueryResult> DispatchAsync<TQueryResult>(IQuery<TQueryResult> query)
where TQueryResult : IQueryResult;
EventStore
Task SaveAsync<TAggregate, TState>(TAggregate aggregate, int expectedVersion)
where TAggregate : Aggregate<TState>
where TState : IAggregateState, new();
should become:
Task SaveAsync<TState>(Aggregate<TState> aggregate, int expectedVersion)
where TState : IAggregateState, new();
Outcome
Calls get their arguments / return types inferred by the compiler, such as:
var result = await _queryDispatcher.DispatchAsync(new MyQuery(/* ... */));
rather than currently being:
var result = await _queryDispatcher.DispatchAsync<MyQuery, MyQueryResult>(new MyQuery(/* ... */));
AggregateRepository
should become:
QueryDispatcher
should become:
EventStore
should become:
Outcome
Calls get their arguments / return types inferred by the compiler, such as:
rather than currently being:
PR will be opened shortly