2

我对 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;
    }
}
4

1 回答 1

0

我看到的最简单的解决方案是为 ChildContainer 的构造函数提供父容器并在 ctor 中调用 CreateChildContainer() 方法:

public class ChildContainer2 : IChildContainer
{
    private IUnityContainer _container;

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

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

但是为什么要让子容器成为服务呢?如果您的应用程序中的每个组件在需要时都自行创建一个子容器,那不是更好吗?

于 2008-12-10T13:51:44.453 回答