c# - 如何使用 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) 中放入什么?
解决方案
推荐阅读
- haskell - 强制性和存在主义
- python - What is not a row in a csv file?
- sequelize.js - sequelize 实例中的 set 和 add 方法有什么区别?
- node.js - 更新节点和 NPM
- header - 向下滚动时粘滞/固定导航栏跳跃
- php - 如何控制使用 PHP 创建的 XML 中元素的顺序?
- c++ - 尽管在类中定义了“未定义的标识符”。
- rabbitmq - rabbitmq-plugins 无法以 rabbitmq 用户身份运行
- javascript - JQuery .load 回调在加载脚本中的 .ready 回调之前调用,初始化加载脚本的正确方法是什么?
- php - 在php中克隆一个变量