访问Windsor IoC容器

时间:2016-05-24 21:48:53

标签: c# castle-windsor ioc-container

我有一个对象,我想访问Windsor容器。我通过使用容器本身注册容器来完成此操作。像这样:

public class WindsorContainerInstaller : IWindsorInstaller
{
  public void Install(IWindsorContainer container, IConfigurationStore store)
  {
    // no idea if this is a good idea or not
    container.Register(Component.For<IWindsorContainer>().Instance(container));
  }
}

public class Foo
{
  public Foo(IWindsorContainer container)
  {
    _container = container;
  }
  private IWindsorContainer _container;
}

我没有看到任何人以这种方式这样做的例子。我倾向于看到人们通过静态类或单例类访问容器的示例。

所以我的问题是。是否有任何问题使用容器本身注册容器?

更新

这个场景可能并不像我最初的代码所暗示的那么简单。如果我的对象有特定的依赖关系,我会在构造函数中指定它,如public Foo(IBar bar)

在这种情况下,Foo并不完全知道它需要什么依赖。

public class Foo
{
  public Foo(IWindsorContainer container)
  {
    _container = container;
  }
  private IWindsorContainer _container;

  public void Add<T>(T entity)
  {
    var bar = _container.Resolve<IBar<T>>();
    bar.Create(entity);
  }
}

0 个答案:

没有答案