代码之家  ›  专栏  ›  技术社区  ›  Rohan West

Unitycontainer,子容器注入

  •  2
  • Rohan West  · 技术社区  · 16 年前

    我是Unity应用程序块的新手,在尝试实现以下功能时有点犹豫不决。我有一个父母和孩子的容器。解析子容器的新实例时,我希望使用CreateChildContainer方法将新的UnityContainer注入到构造函数中。

    public class RootContainer
    {
        private IUnityContainer _container;
    
        public RootContainer()
        {
            _container = new UnityContainer();
            _container.RegisterType<IChildContainer, ChildContainer>();
        }
    }
    
    public interface IChildContainer { }
    
    public class ChildContainer : IChildContainer
    {
        private IUnityContainer _container;
    
        /* I want to inject the parent.CreateChildContainer() into this constructor */
        public ChildContainer(IUnityContainer container)
        {
            _container = container;
        }
    }
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Prensen    16 年前

    我看到的最简单的解决方案是将子容器的构造函数赋给父容器,并在ctor中调用createChildContainer()方法:

    public class ChildContainer2 : IChildContainer
    {
        private IUnityContainer _container;
    
        public ChildContainer(IUnityContainer parent)
        {
            _container = parent.CreateChildContainer();
        }
    
        public IUnityContainer Container { get { return _container; } }
    }
    

    但为什么要将子容器设置为服务?如果应用程序中的每个组件都需要一个子容器,那么它是否会更好呢?