如何使用标准 MVC Core 依赖注入解析未注册类型

2024-04-14

有没有办法得到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(使用前将#替换为@)

如何使用标准 MVC Core 依赖注入解析未注册类型 的相关文章

随机推荐