我想在给定的windsor容器中重新定义(默认)实现.那是OverWrite的用途吗?但不起作用.
container.Register( Component.For() .OverWrite() .Instance(_authorization) );
还有其他想法吗?
欢呼,拉尔斯
您可以在需要覆盖默认实现的位置执行此操作.这是我们的集成测试的一个例子.现在两个实现都已注册,但您的代码将使用默认的代码,即您刚刚注册的代码.像炸弹一样工作,对应用程序的其余部分没有任何影响:
var sendMailStub = MockRepository.GenerateStub(); _container.Register( Component .For () .Instance(sendMailStub) .IsDefault() );
我同意Krzysztof这通常不是一个好主意......但是据我所知,OverWrite()不会覆盖默认组件,它只会覆盖属性定义的生活方式(即[Singleton]).
如果要替换组件,可以使用container.Kernel.RemoveComponent(string key)
新组件的注册.
这里有一个例子,其中这确实是有意义的.