ASP.净芯注入设置

本文关键字:设置 注入 ASP | 更新日期: 2023-09-27 18:16:49

Net Core可以使用IOptions<T>将配置值注入到类中。

如果我有以下appsettings.json配置:

{
  "CustomSection": {
    "Foo": "Bar"
  },
  "RootUrl": "http://localhost:12345/"
}

我可以将IOptions<CustomSection>注入我的构造函数(假设我已经定义了CustomSection类)并读取Foo属性。

我如何注入RootUrl设置到我的构造函数或这是不支持的?

ASP.净芯注入设置

创建如下类

public class AppSettings {
    public string RootUrl{ get; set; }
}

将其注入到startup.cs中,如下所示。

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
}

在你的控制器中使用它,如下所示。

public CustomerController(IOptions<AppSettings> appSettings)
{
    [variable] = appSettings.Value;
}

让我知道这是否适合你

从文档:

不能使用选项和配置对象

选项模式允许使用自定义选项类来表示一组相关设置。一个类需要对每个设置都有一个公共的读写属性,并且需要一个不带任何参数的构造函数(例如默认构造函数),以便作为选项类使用。

这意味着您需要生成一个类来读取它的配置值。但是在您的示例中,RootUrl不能通过类来构造。