繁体   English   中英

如何将我的 appsettings.json 文件中的 Microsoft.Hosting.Lifetime 绑定到我的 C# 应用程序中的 AppSettings class?

[英]How to I bind Microsoft.Hosting.Lifetime in my appsettings.json file to my AppSettings class in my C# application?

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

这是我的 appsettings.json 文件:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  }
...
}

这是 AppSettings.cs:

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 map 中的所有属性都在 AppSettings.cs 中的同名属性上。 嵌套属性绑定到嵌套类(出于显而易见的原因,我没有在 appsettings.json 中显示连接字符串属性,但它们就在那里)。

另请注意,没有绑定到“Microsoft.Hosting.Lifetime”。 我必须添加什么到 AppSettings.cs 才能将其绑定到“Microsoft.Hosting.Lifetime”?

编辑:这是我进行绑定的方式:

在 program.cs 中:

var config = new ConfigurationBuilder()
  .AddJsonFile("appsettings.json")
  .Build();
var appSettings = new AppSettings();
appSettings.BindConfig(config);

在 AppSettings 中,你可以看到我在哪里绑定了上面的配置。

private string _microsoftHostingLifetime;

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

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

我这样处理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM