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 包

  • 相关阅读:
    关于Ext tabpanel 自定义active 样式/iconCls
    关于vue使用 npm run dev报错原因
    vue学习笔记(1)
    BeanCreationNotAllowedException: Error creating bean with name 'cxf' 的原因和解决方案
    js做四则运算时,精度丢失问题及解决方法
    java word/doc/docx文档转PDF 加水印
    HTML学习笔记
    (小白疑问求大神解答)可否理解为数据库就是excel表格的封装?
    excel表格加减法
    基础算法思想
  • 原文地址:https://www.cnblogs.com/weihanli/p/10285543.html
Copyright © 2011-2022 走看看