inversion-of-control - 如何用城堡温莎覆盖组件?

标签 inversion-of-control castle-windsor ioc-container castle

我想在给定的 Windsor 容器中重新定义一个(默认)实现。这是 OverWrite 的用途吗?不过没用。

container.Register(
                    Component.For<IServiceOperationAuthorization>()
                            .OverWrite()
                            .Instance(_authorization)
                    );

还有其他想法吗?

干杯,
拉斯

最佳答案

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

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

关于inversion-of-control - 如何用城堡温莎覆盖组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/658344/

相关文章:

c# - Azure 函数中的 Autofac InstancePerRequest 范围

c# - 使用依赖注入(inject)框架时的抽象工厂

c# - CaSTLe Windsor - 我是否必须释放单例或非一次性 transient 对象?

c# - 注册 'half-closed' 通用组件

unity-container - 如何使用统一根据注入(inject)的类型有条件地绑定(bind)实例?

java - Guice:如何根据(动态网络属性)在运行时更改注入(inject)

c# - 如何解耦 IoC 框架实现

c# - 在 CaSTLe Windsor 中,我可以注册一个接口(interface)组件并获得实现的代理吗?

dependency-injection - 使用 Autofac 注入(inject)特定类型

java - MentaContainer 上的自动布线不起作用?