Я пытаюсь понять, как настроить поведение конвейера с помощью посредника.
Моя команда:
public class MyUpdateCommand : IRequest<CommandResult>
{
// fields
}
Мой обработчик:
public class MyUpdateCommandHandler : RequestHandler<MyUpdateCommand, CommandResult>
{
private readonly IMyRepository _repository;
public GasDetailsUpdateCommandHandler(IMyRepository repository)
{
_repository = repository;
}
protected override CommandResult HandleCore(MyUpdateCommand command)
{
{
_repository.Update(command);
return CommandResult.Success;
}
}
}
Теперь, допустим, я хочу обработать все исключения, возникшие в RequestHandlers, которые возвращают CommandResult
регистрируя их и возвращая сообщение в моем CommandResult
объекте.Я создал этот класс:
public class ExceptionLoggingBehavior<TRequest, TResponse>
: IPipelineBehavior<TRequest, TResponse> where TResponse : CommandResult
{
private readonly ILog _logger;
public ExceptionLoggingBehavior(ILog logger)
{
_logger = logger;
}
public async Task<TResponse> Handle(TRequest request,
CancellationToken cancellationToken, RequestHandlerDelegate<TResponse> next)
{
try
{
return await next();
}
catch (Exception ex)
{
_logger.Error(ex.Message);
return (TResponse) CommandResult.Fail(ex.Message);
}
}
}
Что мне нужно добавить в мой контейнер управления (AutoFac)?