当前位置:  开发笔记 > 运维 > 正文

如何使用城堡windsor覆盖组件?

如何解决《如何使用城堡windsor覆盖组件?》经验,为你挑选了2个好方法。

我想在给定的windsor容器中重新定义(默认)实现.那是OverWrite的用途吗?但不起作用.

container.Register(
                    Component.For()
                            .OverWrite()
                            .Instance(_authorization)
                    );

还有其他想法吗?

欢呼,拉尔斯



1> Peter Munnin..:

您可以在需要覆盖默认实现的位置执行此操作.这是我们的集成测试的一个例子.现在两个实现都已注册,但您的代码将使用默认的代码,即您刚刚注册的代码.像炸弹一样工作,对应用程序的其余部分没有任何影响:

        var sendMailStub = MockRepository.GenerateStub();
        _container.Register(
            Component
                .For()
                .Instance(sendMailStub)
                .IsDefault()
            );



2> Mauricio Sch..:

我同意Krzysztof这通常不是一个好主意......但是据我所知,OverWrite()不会覆盖默认组件,它只会覆盖属性定义的生活方式(即[Singleton]).

如果要替换组件,可以使用container.Kernel.RemoveComponent(string key)新组件的注册.

这里有一个例子,其中这确实是有意义的.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有