gpt4 book ai didi

c# - 是否可以注入(inject)绑定(bind)为子选项的特定配置类而不是 IConfiguration

转载 作者:太空宇宙 更新时间:2023-11-03 22:38:25 26 4
gpt4 key购买 nike

我有一个要注入(inject)到某些 Controller 中的类。它有一些我想自动注入(inject)的依赖项。具体来说,这个类需要传入一个配置对象。

所以我的 appsettings.json 文件看起来像这样:

{
"MyType": {
"Option1": "value"
}
}

我有一个反射(reflect)这个的类,例如。

public class MyTypeConfig
{
public string Option1 { get; set; }
}

我已经在我的启动类中注册了这个。

services.Configure<MyTypeConfig>(Configuration.GetSection("MyType"));

但是,我想收到 MyTypeConfig 的“裸”版本在被实例化的类中,不是 IConfigureOptions<MyTypeConfig>这就是 DI 系统似乎想要注入(inject)的东西。

被注入(inject)类的构造函数看起来像这样(有效):

public MySampleClass(IHttpClientFactory httpClient, IConfigureOptions<MyTypeConfig> configuration, ILogger<MySampleClass> logger)

然而,这才是我真正想要的:

public MySampleClass(IHttpClientFactory httpClient, MyTypeConfig configuration, ILogger<MySampleClass> logger)

我已经在 Microsoft 站点上浏览了该主题,此处:

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.2

但我并没有真正找到答案。

我怎样才能注入(inject) MyTypeConfig?

最佳答案

在启动时从配置中获取类并将其注册到服务集合。

MyTypeConfig config = Configuration.GetSection("MyType").Get<MyTypeConfig>();
services.AddSingleton<MyTypeConfig>(config);

引用 Configuration in ASP.NET Core : Bind to an object graph

关于c# - 是否可以注入(inject)绑定(bind)为子选项的特定配置类而不是 IConfiguration<MyType>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53707449/

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