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 回答