使用 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 的默认实现列表以及可选的附加实现(即,在启用调试模式时,基于请求的请求)。