2008-12-10 3 views
2

Я довольно новичок в блоке приложений Unity и немного застреваю, пытаясь реализовать следующее. У меня есть родительский и дочерний контейнер. Когда я разрешаю новый экземпляр дочернего контейнера, я хочу добавить новый конструктор UnityContainer в конструктор, используя метод 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; 
    } 
} 

ответ

0

Самое простое решение, которое я вижу, чтобы дать конструкторе ChildContainer в родительский контейнер и вызвать метод CreateChildContainer() внутри CTOR:

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

Смежные вопросы