我有一个有两个ctors的班级。一个无参数,一个带参数。
默认情况下,Unity将采用gready方法并转到最后一个ctor。
如何定义要使用的ctor(我想参数化)而不在我的类中添加对Unity的依赖?我认为可以在我的容器创建中做到这一点,但我不知道如何。
目前我的注册条目如下:
container.RegisterType<IConfigurationService, SqlConfigurationService>()
更新
我试图尽可能避免在XML(配置文件)中编程。
EXTRA
如何使用一个参数注册一个构造函数(它应该被注入)?
说ILoggerService已经注册,我想使用构造函数
public SqlConfigurationService(ILoggerService logger){}
答案 0 :(得分:18)
我现在附近没有Unity,但据我记忆,你可以这样做:
container.RegisterType<IConfigurationService, SqlConfigurationService>(
new InjectionConstructor())
答案 1 :(得分:0)
我认为你也可以在你的注册中传入一个InjectionConstructor(包括参数的ResolvedParameter<T>
)。你试过了吗?
答案 2 :(得分:0)
您可以将InjectionConstructor属性应用于要使用的构造函数。然而,这确实存在将一些容器配置从中心位置移开的不利之处。