使用Castle Windsor我可以注册一个类型的多个实现,例如
container.Register(Component.For<IMyInterceptor>()
.ImplementedBy<MyInterceptor>();
container.Register(Component.For<IMyInterceptor>()
.ImplementedBy<MyInterceptor2>();
这一切都按照您的预期工作,我可以使用ResolveAll()
解决多个实现如果我尝试在运行时注册另一个实现的实例 - 例如
var interceptor = new MyInterceptor3();
Container.Register(
Component.For<IMyInterceptor>()
.Instance(interceptor));
我得到一个例外:
已经为给定密钥MyInterceptor3
注册了一个组件这是预期的行为吗?我想要实现的是使用例如Container.ResolveAll()获取IMyInterceptor的默认实现列表以及可选的其他实现(即,在启用调试模式时,基于请求的请求)。
答案 0 :(得分:1)
这会让你感到厌烦。
var interceptor = new MyInterceptor3();
Container.Register(
Component.For<IMyInterceptor>()
.Instance(interceptor).Named("something unique));
名称必须是唯一的。