gpt4 book ai didi

c# - 为什么我的 WindsorContainer 不能解析 IWindsorContainer?

转载 作者:行者123 更新时间:2023-11-30 20:08:57 25 4
gpt4 key购买 nike

这个例子并没有通过使用 IServiceLocator 来包装我的 Container 来使用最佳实践,但它让我有点困惑。

我认为 WindsorContainer 可以自动将其自身解析为 IWindsorContainer?

var container = new WindsorContainer();

container.Register(Component.For<INeedWindsorContainer>()
.ImplementedBy<GiveMeWindsorContainer>()
.LifeStyle.Singleton);

INeedWindsorContainer 的实现:

public class GiveMeWindsorContainer : INeedWindsorContainer
{
IWindsorContainer _container;

public GiveMeWindsorContainer(IWindsorContainer container)
{
_container = container;
}
}

但这可能不起作用,因为 WindsorContainer 不知道如何解析 IWindsorContainer!

当然,我想到的直接解决方案是:

var container = new WindsorContainer();

container.Register(
Component.For<IWindsorContainer>()
.Instance(container)
.LifeStyle.Singleton,
Component.For<INeedWindsorContainer>()
.ImplementedBy<GiveMeWindsorContainer>()
.LifeStyle.Singleton);

不过这对我来说有点奇怪,我是不是做错了什么?

最佳答案

Windsor 可以自动解析 IKernel(容器核心,它具有您需要的大部分功能)。

正如您自己所说,传递容器本身通常不是一个好习惯。大多数情况下,您应该使用工厂,也许是通过类型化的工厂设施。

关于c# - 为什么我的 WindsorContainer 不能解析 IWindsorContainer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6550947/

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