我有一个 3rd 方类库。该库中的一个类具有一个具有多个覆盖的构造函数。
我想告诉 Unity 创建类,使用参数较少的构造函数(默认情况下,它选择参数数量最多的构造函数)。我怎样才能做到这一点?
我知道我可以使用InjectionFactory
,但我更喜欢让 Unity 为我创建对象,而不是为其编写委托。此外,如果我可以访问源代码,我可能会用 标记所需的构造函数InjectionConstructor
,但我没有。那么我的另一个选择是什么?
我有一个 3rd 方类库。该库中的一个类具有一个具有多个覆盖的构造函数。
我想告诉 Unity 创建类,使用参数较少的构造函数(默认情况下,它选择参数数量最多的构造函数)。我怎样才能做到这一点?
我知道我可以使用InjectionFactory
,但我更喜欢让 Unity 为我创建对象,而不是为其编写委托。此外,如果我可以访问源代码,我可能会用 标记所需的构造函数InjectionConstructor
,但我没有。那么我的另一个选择是什么?
由于您不能使用InjectionConstructorAttribute
(正如您提到的,该库不是您的),您可以使用InjectionConstructor类(不是属性)。您需要调用Resolve
自己以确保Unity
构建构造函数参数。像这样的东西:
IUnityContainer c = new UnityContainer()
.RegisterType<IStuff, GoodStuff>()
.RegisterType<StuffUser>(new InjectionConstructor(c.Resolve<IStuff>()));