假设我有两种类型,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在这方面遇到了麻烦。
答案 0 :(得分:1)
你这样做:
class TypeA
{
}
class TypeB
{
[InjectionConstructor]
public TypeB([Dependency] TypeA typeOfA)
{
}
}