2008-12-10 35 views
2

我是Unity应用程序块的新手,并且试图执行以下操作有点困难。我有一个父母和小孩的容器。当我解析一个新的子容器实例时,我想使用CreateChildContainer方法将一个新的UnityContainer注入到构造函数中。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; 
    } 
} 

回答

0

我看到的最简单的办法是给ChildContainer的构造父容器并调用构造函数中的CreateChildContainer()方法:

public class ChildContainer2 : IChildContainer 
{ 
    private IUnityContainer _container; 

    public ChildContainer(IUnityContainer parent) 
    { 
     _container = parent.CreateChildContainer(); 
    } 

    public IUnityContainer Container { get { return _container; } } 
} 

但是,为什么你想孩子容器服务?如果应用程序中的每个组件都需要自己创建一个子容器,那么它会更好吗?

+0

我猜你是假设有如下.. 公共RootContainer(){ _container =新UnityContainer(); _container.RegisterInstance (_ container); _container.RegisterType (); } – 2009-04-17 11:10:39