gpt4 book ai didi

c# - 如何使用标准 MVC Core 依赖注入(inject)解决未注册的类型

转载 作者:可可西里 更新时间:2023-11-01 03:07:13 25 4
gpt4 key购买 nike

有没有办法得到IServiceProvider.GetService<T>即使 T 也返回一个实例没有明确注册到容器?

如果我知道T有依赖项我希望根据他们的注册注入(inject)它们,而不必注册 T本身。

我相信 Ninject 会智能地计算出最合适的构造函数,如果找不到合适的构造函数,则回退到无参数构造函数。如果可能,我想使用标准 MVC Core DI 框架复制此行为。

最佳答案

为了保持最新:有一种方法可以准确地实现您正在寻找的东西。

.NET Core 的标准依赖注入(inject)器

在我的示例中,我为展示创建了一个新的 IServiceCollection 实例:

var services = new ServiceCollection();
var serviceProvider = services.BuildServiceProvider();
var unregisteredClassInstance =
ActivatorUtilities.CreateInstance<UnregisteredClass>(serviceProvider);

这为您提供了一个 UnregisteredClass 类型的实例,该实例之前未注册,但采用了之前在 ServiceCollection 上注册的构造函数参数。

第三方依赖注入(inject)器

SimpleInjector 可以轻松做到这一点 container.GetInstance<UnregisteredClass>(); .

关于c# - 如何使用标准 MVC Core 依赖注入(inject)解决未注册的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38182929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com