我是很新的统一应用程序块和我有点卡住试图执行以下。我有一个父和子容器。当我解决孩子容器的新实例我想用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;
    }
}
有帮助吗?

解决方案

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

public class ChildContainer2 : IChildContainer
{
    private IUnityContainer _container;

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top