在Unity中选择参数较少的构造函数
本文关键字:构造函数 参数 Unity 选择 | 更新日期: 2023-09-27 18:17:44
我有一个第三方类库。该库中的一个类具有具有多个覆盖的构造函数。
我想告诉Unity使用参数较少的构造函数来创建类(默认情况下,它选择参数最多的构造函数)。我该怎么做呢?
我知道我可以使用InjectionFactory
,但我更喜欢让Unity为我创建对象,而不是为它编写一个委托。另外,如果我可以访问源代码,我可能会用InjectionConstructor
标记所需的构造函数,但我没有这样做。那么我的其他选择是什么呢?
既然你不能使用InjectionConstructorAttribute
(正如你提到的,库不是你的),你可以使用InjectionConstructor类(不是属性)。您需要自己调用Resolve
,以确保Unity
构建构造函数参数。像这样:
IUnityContainer c = new UnityContainer()
.RegisterType<IStuff, GoodStuff>()
.RegisterType<StuffUser>(new InjectionConstructor(c.Resolve<IStuff>()));