gpt4 book ai didi

caSTLe-windsor - WindsorContainers AddChildContainer 真的这么糟糕吗?

转载 作者:行者123 更新时间:2023-12-01 12:46:56 25 4
gpt4 key购买 nike

我正在尝试从一组基本注册中分支出许多子容器,以便于进行不同的配置设置。

我认为基于 Mark Seemanns reply on how child containers work我可以使用子容器覆盖基本注册中的特定组件。但是,我似乎并不像 Seemann 声称的那样工作。

根据马克这应该工作:

[TestMethod]
public void OverrideRegistrationInParentContainer()
{
//IBusinessComponent depends on IBasicComponent
var parentContainer = new WindsorContainer();
parentContainer.Register(Component.For<IBasicComponent>().ImplementedBy<BasicComponent>()); //Returns 42
parentContainer.Register(Component.For<IBusinessComponent>().ImplementedBy<RealBusinessComponent>()); //Returns the result of IBasicComponent


var childContainer = new WindsorContainer();
childContainer.Register(Component.For<IBasicComponent>().ImplementedBy<BasicComponent2>()); //Returns 40

parentContainer.AddChildContainer(childContainer);

var service = childContainer.Resolve<IBusinessComponent>();
Assert.AreEqual(40, service.GetBusinessValue()); //This fails with the actual value being 42
}

然而,所有依赖项显然都是从父级解决的。

如果我从 parentContainer 中删除 IBasicComponent 注册,由于缺少注册,我什至无法解决依赖关系。

谁能解释一下您如何让容器按照 Seemann 声称的方式运行,或者 WindsorContainer 是否真的无法以优雅的方式处理这种类型的配置?

最佳答案

您所指的行为曾经在旧的 Windsor 版本中工作,但在较新的版本中已更改。

基本上这是一个错误,它允许子容器中的组件在其范围之外可见(当组件表单父级依赖于子级组件时)

因此,允许依赖项来自 child --> parent,但不能反过来。

关于caSTLe-windsor - WindsorContainers AddChildContainer 真的这么糟糕吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com