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

本文关键字:构造函数 参数 Unity 选择 | 更新日期: 2023-09-27 18:17:44

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

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

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

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

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

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