假设我有两种类型,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 在这方面遇到了麻烦。