UnityContainer, инъекция дочернего контейнера - PullRequest
2 голосов
/ 10 декабря 2008

Я довольно новичок в блоке приложений Unity и немного застрял, пытаясь реализовать следующее. У меня есть родительский и дочерний контейнер. Когда я разрешаю новый экземпляр дочернего контейнера, я хочу внедрить новый UnityContainer в конструктор, используя метод CreateChildContainer.

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 Ответ

0 голосов
/ 10 декабря 2008

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

public class ChildContainer2 : IChildContainer
{
    private IUnityContainer _container;

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

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

Но почему вы хотите сделать дочерний контейнер сервисом? Разве не было бы лучше, если бы каждый компонент в вашем приложении сам создавал дочерний контейнер, если он ему нужен?

...