为什么我的WindsorContainer不能解析IWindsorContainer

本文关键字:IWindsorContainer 不能 我的 WindsorContainer 为什么 | 更新日期: 2023-09-27 18:00:49

这个例子没有使用最佳实践,使用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);

然而,这对我来说似乎有点奇怪,我是不是做错了什么?

为什么我的WindsorContainer不能解析IWindsorContainer

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

正如您自己所说,传递容器本身通常不是一个好的做法。大多数时候,你应该使用工厂,也许是通过打字工厂设施。

相关文章:
  • 没有找到相关文章