0

假设我有两种类型,TypeA 和 TypeB,我想在 Unity 中注册。TypeB 依赖于 TypeA 所以我想通过构造函数注入将 TypeA 注入到类型 B 中。所以我想写一些类似下面的东西,让 Unity 足够聪明地为我级联分辨率:

_container.RegisterType<ITypeA, TypeA>();
_container.RegisterType<ITypeB, TypeB>();

如何告诉 Unity 解析 TypeA 并注入 TypeB?

如果使用配置文件,看起来这是可能的,但我不知道你将如何以编程方式进行:

<type name="typeB" type="ITypeB" mapTo="TypeB">
   <lifetime type="Singleton"/>
   <typeConfig extensionType="...">
      <constructor>
        <param name="typeA" parameterType="ITypeA">
           <dependency/>
        </param>
      </constructor>
   </typeConfig>
</type>

在此先感谢您的任何建议!


编辑:所以,Unity 确实为我处理了这个问题。但是,我认为我的问题是我有一个有两个构造函数的类:

public TypeB(TypeA typeA)
{
    _x = typeA;
}

public TypeB() : this(Something.Value)
{
}

似乎 Unity 无法知道使用哪个构造函数。第一个构造函数用于单元测试,第二个应该在运行时使用。Unity 在这方面遇到了麻烦。

4

1 回答 1

1

你这样做:

class TypeA
{
}

class TypeB
{

    [InjectionConstructor]
    public TypeB([Dependency] TypeA typeOfA)
    {

    }
}
于 2009-06-06T13:59:56.920 回答