2

それに応じて、3つのインターフェイスと3つのクラスを定義しました。クラスAはインターフェイスBに依存し、インターフェイスBはインターフェイスCと具象クラスに依存します。私のサンプルコードは次のようになります

public interface IA
{
}

public class A : IA
{
    private IB b;

    public A(IB b)
    {
        this.b = b;
    }
}

public interface IB
{
}

public class B : IB
{
    private IC c;
    private string myValue;

    public B(IC c, string myValue)
    {
        this.c = c;
        this.myValue = myValue;
    }
}

public interface IC
{
}

public class C : IC
{
}

特別なのはクラスBで、コンストラクターには型と文字列(具象値)の両方が必要です。

        using (IUnityContainer container = new UnityContainer())
        {
            container.RegisterType<IB, B>()
                .RegisterType<IA, A>()
                .RegisterType<IC, C>();

            IA a = container.Resolve<IA>();
        }

ICと文字列値の両方をクラスBに注入するようにコンテナに指示するコードをどのように定義すればよいですか?

4

2 に答える 2

2

これにより、登録されたオブジェクトに値を挿入する方法の詳細が提供されます。これはInjectionConstructorと呼ばれ、探している手段を提供します。それほど難しくはありません。Unityでできることはたくさんあります。

于 2012-07-24T19:48:36.320 に答える
1

あなたはInjectionConstructorをあなたの登録に渡すことができます。

container.RegisterType<IB, B>(new InjectionConstructor(container.Resolve<IC>(), "myvalue-value"));
于 2012-07-24T19:48:17.963 に答える