0

我有一个 3rd 方类库。该库中的一个类具有一个具有多个覆盖的构造函数。

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

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

4

1 回答 1

1

由于您不能使用InjectionConstructorAttribute(正如您提到的,该库不是您的),您可以使用InjectionConstructor类(不是属性)。您需要调用Resolve自己以确保Unity构建构造函数参数。像这样的东西:

IUnityContainer c = new UnityContainer()
    .RegisterType<IStuff, GoodStuff>()
    .RegisterType<StuffUser>(new InjectionConstructor(c.Resolve<IStuff>()));
于 2013-06-11T02:13:21.000 回答