zoukankan      html  css  js  c++  java
  • asp.net core 读取 appsettings.json 节点值

    方法一直接读取JSON节点值:

      "AppSettings": {
    "CacheDays": 30,
    }
    public string GetIntelligenceApiUrl
            {
                get
                {
                    var cacheDays = new ConfigurationHelper().Get<string>("AppSettings:CacheDays");
                    return cacheDays;
                }
            }

    方法一的操作类:

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.Json;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Options;
    using System.IO;
    
        /// <summary>
        /// 读取配置文件
        /// </summary>
        public class ConfigurationHelper
        {
            public IConfiguration _config { get; set; }
    
            public ConfigurationHelper()
            {
                _config = new ConfigurationBuilder()
                .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })//ReloadOnChange = true 当appsettings.json被修改时重新加载
                .Build();
            }
    
            public T GetAppSettings<T>(string key) where T : class, new()
            {
                var appconfig = new ServiceCollection()
                    .AddOptions()
                    .Configure<T>(_config.GetSection(key))
                    .BuildServiceProvider()
                    .GetService<IOptions<T>>()
                    .Value;
                return appconfig;
            }
    
            public T Get<T>(string key)
            {
                IConfiguration config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", true, true).Build();
    
                return config.GetSection(key).Get<T>();
            }
    
            //public T GetAppsettings<T>(string key) where T : class, new()
            //{
            //    string keyDir = System.IO.Directory.GetCurrentDirectory();
    
            //    IConfiguration config = new ConfigurationBuilder()
            //        .SetBasePath(keyDir)
            //        .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })//ReloadOnChange = true 当appsettings.json被修改时重新加载
            //        .Build();
            //    var appconfig = new ServiceCollection()
            //        .AddOptions()
            //        .Configure<T>(config.GetSection(key))
            //        .BuildServiceProvider()
            //        .GetService<IOptions<T>>()
            //        .Value;
            //    return appconfig;
            //}
    
            /// <summary>
            /// 通过强类型绑定读取配置
            /// </summary>
            /// <typeparam name="Entity">要绑定的类型</typeparam>
            /// <param name="keyPath">配置文件路径</param>
            /// <returns>绑定的类</returns>
            public Entity GetSectionObject<Entity>(string keyPath = null) where Entity : new()
            {
                var entity = new Entity();
                if (string.IsNullOrEmpty(keyPath))
                {
                    //将appsettings.json全部配置绑定到模型
                    _config.Bind(entity);
                }
                else
                {
                    //将指定路径下的配置项绑定到模型
                    var section = _config.GetSection(keyPath);
                    section.Bind(entity);
                }
                return entity;
            }
        }

    方法二通过注入方式:

    using Microsoft.Extensions.Configuration;
    
        public class AppSettingOptions : IAppSetting
        {
            public AppSettingOptions()
            {
                var configBuilder = new ConfigurationBuilder();
                configBuilder.AddJsonFile("appsettings.json");
                var config = configBuilder.Build();
                var section = config.GetSection("AppSettings");
                section.Bind(this);
            }
    
            public int CacheDays { get; set; }
    
        }
    
        public interface ISingle
        {
        }
    
        public interface IScope
        {
        }
    
        public interface ITrans
        {
        }
    
        public interface IAppSetting : IScope { }

    方法二注入:

            readonly AppSettingOptions _config;
    
            public BoProcessIntelligenceShareHolder(IAppSetting config)
            {
                _config = (AppSettingOptions)config;
            }
  • 相关阅读:
    打印九九乘法表
    PAT (Basic Level) Practice (中文) 1091 N-自守数 (15分)
    PAT (Basic Level) Practice (中文)1090 危险品装箱 (25分) (单身狗进阶版 使用map+ vector+数组标记)
    PAT (Basic Level) Practice (中文) 1088 三人行 (20分)
    PAT (Basic Level) Practice (中文) 1087 有多少不同的值 (20分)
    PAT (Basic Level) Practice (中文)1086 就不告诉你 (15分)
    PAT (Basic Level) Practice (中文) 1085 PAT单位排行 (25分) (map搜索+set排序+并列进行排行)
    PAT (Basic Level) Practice (中文) 1083 是否存在相等的差 (20分)
    PAT (Basic Level) Practice (中文) 1082 射击比赛 (20分)
    PAT (Basic Level) Practice (中文) 1081 检查密码 (15分)
  • 原文地址:https://www.cnblogs.com/hofmann/p/14982748.html
Copyright © 2011-2022 走看看