zoukankan      html  css  js  c++  java
  • 给IConfiguration写一个GetAppSetting扩展方法

    IConfiguration 写一个 GetAppSetting 扩展方法

    Intro

    在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config,并重新设计了一套完整的配置系统,可以支持 json/xml/ini/环境变量等。

    在 .net core 中有一个 GetConnectionString 的扩展方法用来比较方便的获取链接字符串,类似于在 .net framework 中使用 ConfigurationManager.ConnectionStrings["key"] 来获取链接字符串。

    这次来参考 GetConnectionString 实现一个 GetAppSetting,类似于 .net framework 中使用 ConfigurationManager.AppSettings 来获取配置值。

    实现代码

    GetConnectionString 是获取 ConnectionStrings 这个节点下的某个配置,
    GetAppSetting 来获取 AppSettings 这个节点下的某个配置

    实现代码:

            /// <summary>
            /// GetAppSetting
            /// Shorthand for GetSection("AppSettings")[key]
            /// </summary>
            /// <param name="configuration">IConfiguration instance</param>
            /// <param name="key">appSettings key</param>
            /// <returns>app setting value</returns>
            public static string GetAppSetting([NotNull]this IConfiguration configuration, string key)
            {
                return configuration.GetSection("AppSettings")[key];
            }
    
            /// <summary>
            /// GetAppSetting
            /// Shorthand for GetSection("AppSettings")[key]
            /// </summary>
            /// <param name="configuration">IConfiguration instance</param>
            /// <param name="key">appSettings key</param>
            /// <returns>app setting value</returns>
            public static T GetAppSetting<T>([NotNull]this IConfiguration configuration, string key)
            {
                return configuration.GetSection("AppSettings")[key].To<T>();
            }
    
            /// <summary>
            /// GetAppSetting
            /// Shorthand for GetSection("AppSettings")[key]
            /// </summary>
            /// <param name="configuration">IConfiguration instance</param>
            /// <param name="key">appSettings key</param>
            /// <param name="defaultValue">default value if not exist</param>
            /// <returns>app setting value</returns>
            public static T GetAppSetting<T>([NotNull] this IConfiguration configuration, string key, T defaultValue)
            {
                return configuration.GetSection("AppSettings")[key].ToOrDefault(defaultValue);
            }
    
            /// <summary>
            /// GetAppSetting
            /// Shorthand for GetSection("AppSettings")[key]
            /// </summary>
            /// <param name="configuration">IConfiguration instance</param>
            /// <param name="key">appSettings key</param>
            /// <param name="defaultValueFunc">default value func if not exist to get a default value</param>
            /// <returns>app setting value</returns>
            public static T GetAppSetting<T>([NotNull] this IConfiguration configuration, string key, Func<T> defaultValueFunc)
            {
                return configuration.GetSection("AppSettings")[key].ToOrDefault(defaultValueFunc);
            }
    

    查看源码

    使用

    使用起来和 GetConnectionString 差不多

    测试 appsettings.json

    {
      "ConnectionStrings": {
        "TestDb": "server=.;database=Test;uid=weihanli;pwd=Admin888"
      },
      "AppSettings":{
        "Number": 12,
        "City": "Shanghai"
      }
    }
    

    GetAppSetting 示例

            IConfiguration configuration = new ConfigurationBuilder()
                // ...
                .AddJsonFile("appsettings.json")
                .Build();
    
            var city = configuration.GetAppSetting("City");
            var number = configuration.GetAppSetting<int>("Number");
            System.Console.WriteLine($"City:{city}, Number:{number}");
    

    Memo

    你可以复制上面的代码在你自己的代码里使用,也可以直接使用 WeihanLi.Common 这一 nuget 包

  • 相关阅读:
    avalon做的抽奖效果
    [转]谈谈前端渲染 VS 后端渲染
    迷你MVVM框架 avalonjs 1.3.7发布
    迷你MVVM框架 avalonjs 学习教程22、avalon性能大揭密
    Facebook React 和 Web Components(Polymer)对比优势和劣势
    迷你MVVM框架 avalonjs 学习教程21、双向绑定链
    迷你MVVM框架 avalonjs 学习教程20、路由系统
    html中的数据岛:利用DSO和javascript在html中动态加载和浏览xml数据
    使用JS的 FileReader 读取本地文本文件(可兼容各种浏览器)
    简易版jquery
  • 原文地址:https://www.cnblogs.com/weihanli/p/10285543.html
Copyright © 2011-2022 走看看