首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将appsettings.json文件中的appsettings.json绑定到appsettings.json应用程序中的AppSettings类?

如何将appsettings.json文件中的appsettings.json绑定到appsettings.json应用程序中的AppSettings类?
EN

Stack Overflow用户
提问于 2021-02-28 18:45:52
回答 1查看 297关注 0票数 0

我正在尝试将我的appsettings.json文件绑定到我的AppSettings类。它适用于除"Microsoft.Hosting.Lifetime“之外的所有属性,因为我不知道如何在C#类中创建一个包含点的属性。

这是我的appsettings.json文件:

代码语言:javascript
复制
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  }
...
}

以下是AppSettings.cs:

代码语言:javascript
复制
using System;
using Microsoft.Extensions.Configuration;

namespace AMI.TBoard.LCTransfer
{
    public class AppSettings
    {
        public Logging Logging { get; set; }

        public ConnectionStrings ConnectionStrings { get; set; }

        public FtpConnectionStrings FtpConnectionStrings { get; set; }

        public void BindConfig(IConfiguration config)
        {
            config.Bind(this);
        }
    }

    public class Logging
    {
        public LogLevel LogLevel { get; set; }
    }

    public class LogLevel
    {
        public string Default { get; set; }
        public string Microsoft { get; set; }
    }

    public class ConnectionStrings
    {
        public string appDbConnection { get; set; }
    }

    public class FtpConnectionStrings
    {
        public string url { get; set; }
        public string username { get; set; }
        public string password { get; set; }
        public string exportFolder { get; set; }
        public string importFolder { get; set; }
    }
}

注意,appsettings.json中的所有属性都以AppSettings.cs中的同名映射到属性上。嵌套属性绑定到嵌套类(出于明显的原因,我没有在appsettings.json中显示连接字符串属性,但它们确实存在)。

还请注意,没有绑定到"Microsoft.Hosting.Lifetime“。要将AppSettings.cs绑定到"Microsoft.Hosting.Lifetime“,我需要添加什么?

编辑:下面是我如何进行绑定的方法:

在program.cs中:

代码语言:javascript
复制
var config = new ConfigurationBuilder()
  .AddJsonFile("appsettings.json")
  .Build();
var appSettings = new AppSettings();
appSettings.BindConfig(config);

在AppSettings中,您可以看到上面绑定配置的位置。

EN

回答 1

Stack Overflow用户

发布于 2022-01-26 06:15:33

代码语言:javascript
复制
private string _microsoftHostingLifetime;

public string MicrosoftHostingLifetime {
       get 
       {
            if (string.IsNullOrWhiteSpace(_microsoftHostingLifetime))
            {
                _microsoftHostingLifetime = Configuration["Logging:LogLevel:Microsoft.Hosting.Lifetime"];
            }

            return _microsoftHostingLifetime;
        }
        set 
        {
            _microsoftHostingLifetime = value;
        }
    }

我是这样做的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66412699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档