我有第三方类库。该库中的一个类有一个带有多个覆盖的构造函数。
我想告诉Unity使用具有较少参数的构造函数创建类(默认情况下,它选择具有最多参数的构造函数)。我怎么能这样做?
我知道我可以使用InjectionFactory
,但我更愿意让Unity为我创建对象,而不是为它编写代理。此外,如果我有权访问源代码,我可能会使用InjectionConstructor
标记所需的构造函数,但我没有。那么我的另一个选择是什么?
答案 0 :(得分:1)
由于您无法使用InjectionConstructorAttribute
(如您所述,库不是您的),您可以使用InjectionConstructor类(不是属性)。您需要自己调用Resolve
以确保Unity
构建构造函数参数。像这样:
IUnityContainer c = new UnityContainer()
.RegisterType<IStuff, GoodStuff>()
.RegisterType<StuffUser>(new InjectionConstructor(c.Resolve<IStuff>()));