在Unity中选择具有较少参数的构造函数

时间:2013-06-11 01:23:32

标签: c# dependency-injection unity-container

我有第三方类库。该库中的一个类有一个带有多个覆盖的构造函数。

我想告诉Unity使用具有较少参数的构造函数创建类(默认情况下,它选择具有最多参数的构造函数)。我怎么能这样做?

我知道我可以使用InjectionFactory,但我更愿意让Unity为我创建对象,而不是为它编写代理。此外,如果我有权访问源代码,我可能会使用InjectionConstructor标记所需的构造函数,但我没有。那么我的另一个选择是什么?

1 个答案:

答案 0 :(得分:1)

由于您无法使用InjectionConstructorAttribute(如您所述,库不是您的),您可以使用InjectionConstructor类(不是属性)。您需要自己调用Resolve以确保Unity构建构造函数参数。像这样:

IUnityContainer c = new UnityContainer()
    .RegisterType<IStuff, GoodStuff>()
    .RegisterType<StuffUser>(new InjectionConstructor(c.Resolve<IStuff>()));
相关问题