How can I override a component registered in Castle Windsor?

徘徊边缘 提交于 2019-12-07 14:12:11

问题


I'm just starting with Windsor, so please be gentle :) I have a scenario where I want to be able to override/replace components placed inside a windsor container. Read on ...

In my prod code, I want to be able to register a component which implements a base class, and use a container to resolve the implementer. So far, using

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

and

container.Resolve<LoggerBase>();

In my tests, I'd like to add a stub/mock implementation to override the "DebugLogger" implementation so that when my prod code calls container.Resolve<LoggerBase>(); it gets the overridden implementation.

Any pointers would be welcome!


回答1:


Instead of chasing down that path, you should rather use different container instances for different scenarios. Each instance could be configured differently. That's the whole point of a DI Container.

However, in general DI Containers should not be used for unit testing.



来源:https://stackoverflow.com/questions/1687574/how-can-i-override-a-component-registered-in-castle-windsor

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!