美文网首页Amazing .NETASP.NET Core见识录.NET Core
给IConfiguration写一个GetAppSetting扩

给IConfiguration写一个GetAppSetting扩

作者: 天天向上卡索 | 来源:发表于2019-01-17 22:15 被阅读9次

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}");

相关文章

  • 给IConfiguration写一个GetAppSetting扩

    给 IConfiguration 写一个 GetAppSetting 扩展方法 Intro 在 .net core...

  • 《学习扩写》写作教学设计

    教学设想 学习扩写,对于学生来说,并不是一个新生事物。小学时,学生曾接触过扩句,所以,扩写并不是一个难题。只是,扩...

  • 扩写

    站在大楼顶的他想要跳下去。(曲折感) 他拖着39摄氏度的身体,失魂落魄的站在废弃的大楼顶上,望着楼下川流不息的车流...

  • 扩写

    #29天写作魔鬼训练营# 午夜的街道,街灯、穿梭的汽车和雾气笼罩的街道。这是11月底的一天,她又是最晚离开公司的那...

  • 扩写

    一水护田将绿绕,两山排闼送青来。 风轻轻的推开门,隐约间可见潺潺溪水环绕着农田,清澈透明的水从指...

  • 扩写

    扩写是对原文进行扩展和充实,把简略的原文扩展成符合题意要求的文章。扩写需要充分放开思路,展开想象,进行合理的创造,...

  • 扩写

    灰蒙蒙阴沉沉的天气,就像他的心情一样,看不清天上的星空,也看不清他前进的路。 前些日子,女儿的病终于熬不下去走了,...

  • 扩写

    焦躁。 微醺的夕阳透过玻璃照在脸上,而我只觉得烦躁,好似烈日灼烧我的皮肤;嘀嗒的空调水打在窗檐,我怪它扰人清闲...

  • NETCore下IConfiguration和IOptions的

    新建一个NETCore Web API项目,在Startup.cs里就会开始使用IConfiguration和IO...

  • 扩写一个噩梦

    那一天来的突然,没有一点点征兆。 那还是在凌晨的时候,天刚蒙蒙亮。城市的高楼鳞次栉比,有时候恍惚间会觉得他们是沉默...

网友评论

    本文标题:给IConfiguration写一个GetAppSetting扩

    本文链接:https://www.haomeiwen.com/subject/yimwdqtx.html