2

私は Unity Application Block にかなり慣れていないので、次の実装に少し手こずっています。親コンテナと子コンテナがあります。子コンテナーの新しいインスタンスを解決するときに、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 に答える