如何覆盖Castle Windsor中注册的组件?

时间:2009-11-06 13:23:28

标签: c# castle-windsor ioc-container

我刚刚开始使用Windsor,所以请温柔:)我有一个场景,我希望能够覆盖/替换放置在windsor容器内的组件。请继续阅读...

在我的prod代码中,我希望能够注册实现基类的组件,并使用容器来解析实现者。到目前为止,使用

container.Register(Component.For<LoggerBase>().ImplementedBy<DebugLogger>());

container.Resolve<LoggerBase>();

在我的测试中,我想添加一个存根/模拟实现来覆盖“DebugLogger”实现,这样当我的prod代码调用container.Resolve<LoggerBase>();时,它就会得到被覆盖的实现。

欢迎任何指示!

1 个答案:

答案 0 :(得分:3)

您应该为不同的场景使用不同的容器实例,而不是追逐该路径。每个实例可以配置不同。这就是DI容器的重点。

但是,一般来说DI Containers should not be used for unit testing