Unity选择带参数的构造函数

时间:2012-08-08 18:49:13

标签: c# dependency-injection unity-container

我正在注册类似的类型:

IUnityContainer container = new UnityContainer()
                .RegisterType<IActiveDirectoryUser, ADUser>();

ADUser类包含2个构造函数,一个无参数,一个具有单个参数。当解析器解决它时,它会选择带参数的解析器。如何告诉它使用无参数控制器?

2 个答案:

答案 0 :(得分:10)

注册类型时,使用InjectionConstructor指示Unity应使用无参数构造函数:

IUnityContainer container = new UnityContainer();
container.RegisterType<IActiveDirectoryUser, ADUser>(new InjectionConstructor());

由于您没有将任何类型传递给InjectionConstructor构造函数,因此Unity会在实例化ADUser类时知道使用无参数构造函数。

答案 1 :(得分:1)

使用[InjectionConstructor]注释所需的构造函数。