有没有办法得到IServiceProvider.GetService<T>
返回一个实例,即使T
没有显式注册到容器中?
如果我知道的话T
具有依赖项,我希望根据其注册来注入它们,而无需注册T
itself.
我相信 Ninject 会智能地找出最合适的构造函数,或者在找不到合适的构造函数时回退到无参数构造函数。如果可能的话,我想使用标准 MVC Core DI 框架复制此行为。
为了保持最新状态:有一种方法可以准确实现您正在寻找的目标。
.NET Core的标准依赖注入器
在我的示例中,我创建了一个 IServiceCollection 的新实例用于展示:
var services = new ServiceCollection();
var serviceProvider = services.BuildServiceProvider();
var unregisteredClassInstance =
ActivatorUtilities.CreateInstance<UnregisteredClass>(serviceProvider);
这将为您提供一个 UnregisteredClass 类型的实例,该实例先前未注册,但采用先前在 ServiceCollection 上注册的构造函数参数。
第三方依赖注入器
SimpleInjector 可以轻松做到这一点container.GetInstance<UnregisteredClass>();
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)