Внедрение CQRS Asynchronous QueryDispatchers - PullRequest
0 голосов
/ 03 сентября 2018

просто Простой вопрос: правильно ли я реализую QueryDispatcherAsync? Интерфейс:

public interface IQueryDispatcherAsync
{
    Task<TQueryModel> ExecuteAsync<TQueryModel>(QueryAsync query) where TQueryModel : QueryModel;
}

Класс QueryDispatcher:

public class QueryDispatcherAsync : IQueryDispatcherAsync
{
    private readonly IRepositoryFactory _repositoryFactory;
    public QueryDispatcherAsync(IRepositoryFactory repositoryFactory)
    {
        _repositoryFactory = repositoryFactory;
    }
    public async Task<TQueryModel> ExecuteAsync<TQueryModel>(QueryAsync query) where TQueryModel : QueryModel
    {
        try
        {
            query.RepositoryFactory = _repositoryFactory;
            var model = await query.ExecuteAsync();
            return (TQueryModel)model;
        }
        catch (Exception ex)
        {
            //TODO: Write some kind of error reporting service that logs errors and reports to dev
            var exception = ex;
            throw;
        }
    }
}

Класс QueryAsync:

 public abstract class QueryAsync
 {
  public IRepositoryFactory RepositoryFactory { get; set; }

  public abstract Task<QueryModel> ExecuteAsync();
 }

Класс QueryModel: "Здесь нет ничего важного, чтобы просто указать, что это тип возвращаемого запроса":

public class QueryModel
{
}
...