将无参数构造函数设置为容器创建中的注入构造函数

时间:2009-12-22 10:53:47

标签: c# unity-container ioc-container

我有一个有两个ctors的班级。一个无参数,一个带参数。
默认情况下,Unity将采用gready方法并转到最后一个ctor。

如何定义要使用的ctor(我想参数化)而不在我的类中添加对Unity的依赖?我认为可以在我的容器创建中做到这一点,但我不知道如何。

目前我的注册条目如下:

container.RegisterType<IConfigurationService, SqlConfigurationService>()

更新
我试图尽可能避免在XML(配置文件)中编程。

EXTRA
如何使用一个参数注册一个构造函数(它应该被注入)? 说ILoggerService已经注册,我想使用构造函数

public SqlConfigurationService(ILoggerService logger){}

3 个答案:

答案 0 :(得分:18)

我现在附近没有Unity,但据我记忆,你可以这样做:

container.RegisterType<IConfigurationService, SqlConfigurationService>(
    new InjectionConstructor())

答案 1 :(得分:0)

我认为你也可以在你的注册中传入一个InjectionConstructor(包括参数的ResolvedParameter<T>)。你试过了吗?

答案 2 :(得分:0)

您可以将InjectionConstructor属性应用于要使用的构造函数。然而,这确实存在将一些容器配置从中心位置移开的不利之处。