首页 > 解决方案 > 如何使用 Autofac 注册调解员的 IPipelineBehavior

问题描述

我正在尝试了解如何使用调解器设置管道行为。

我的命令:

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对象中返回消息来返回 a 。我创建了这个类:

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) 中放入什么?

标签: c#autofacmediatormediatr

解决方案


推荐阅读