【发布时间】:2011-04-20 11:59:24
【问题描述】:
我有如下接口定义:
public interface ICommandHandler
{
ILogger Logger { get; set; }
bool SendAsync { get; set; }
}
我有多个实现ICommandHandler 需要解决。虽然 Castle Windows 会自动注入 Logger 属性,但当注入 ILogger 时,我找不到将 SendAsync 属性配置为在创建新实例期间由 Windsor 设置为 true 的方法。
更新
命令处理程序实现了一个从基本接口继承的通用接口:
public interface ICommandHandler<TCommand> : ICommandHandler
where TCommand : Command
{
void Handle(TCommand command);
}
这是我的配置:
var container = new WindsorContainer();
container.Register(Component
.For<ICommandHandler<CustomerMovedCommand>>()
.ImplementedBy<CustomerMovedHandler>());
container.Register(Component
.For<ICommandHandler<ProcessOrderCommand>>()
.ImplementedBy<ProcessOrderHandler>());
container.Register(Component
.For<ICommandHandler<CustomerLeftCommand>>()
.ImplementedBy<CustomerLeftHandler>());
温莎城堡有什么方法可以做到这一点?
【问题讨论】:
标签: c# .net dependency-injection castle-windsor ioc-container