给 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}");
给 IConfiguration 写一个 GetAppSetting 扩展方法相关推荐
- appsetting mysql_给IConfiguration写一个GetAppSetting扩展方法(示例代码)
给 IConfiguration 写一个 GetAppSetting 扩展方法 Intro 在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config ...
- [js] 手写一个trim()的方法
[js] 手写一个trim()的方法 function trim(str) { if (str[0] === ' ' && str[str.length - 1] === ' ') { ...
- 简单几步写一个laravel扩展包
为什么80%的码农都做不了架构师?>>> laravel使用composer来管理扩展包,理解composer和laravel的开发模式,可以通过简单的几个步骤,快速写出一个l ...
- 跟我一起写一个chrome扩展程序
在我没有看这本书之前,我都想象不到,原来chrome扩展程序可以这样写,真的非常有意思. 就是用最简单最基础的代码,然后就实现了一些非常有意思的玩意儿. 先看效果图 实际运用要和现实联系在一起,经历和 ...
- 写一个带输入输出的存储过程_携程大佬带你写一个可扩展的Spring插件。
前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 作者:宋顺 来源:nobodyiam.com # 背景介绍 Spring现在几乎已经成为了Java开发的必备框架,在享受Spring ...
- java手写一个分页的方法_java web手写实现分页功能
现在很多流行的框架,都可以很快的把分页效果做出来,但是作为一名程序员你必须得知道手写分页的流程: 场景效果: 一.分页的思路 首先我们得知道写分页代码的思路,保持思路清晰,才能行云流水的去写代码,其实 ...
- 如何写一个好的方法-读Clean Code 有感
针对方法,文中提到了几个规则,我认为比较有价值的几个列在下面. 1. 短小.好的方法是只做一件事情. 那么如何判断一个方法是做了一件事情呢?根据Clean Code的描述,是指的方法所作的事 ...
- java让一个方法等待_如何写一个“等待”的方法?
只需将您的方法转换为任务 . 像@Romiox我通常使用这个扩展 public static partial class Ext { #region Public Methods public sta ...
- 通过生成器写一个日志调用方法
要求: 代码: import loggingdef logging_data(filename, channel='terminal'):logger = logging.getLogger()log ...
最新文章
- 61 Celery Beat 任务调度
- 淡淡说说技术人员创业
- c 整数的逆序输出 输入3,2就算 2+22+222的结果
- 推荐一个免费的屏幕取色器,鼠标放到的位置自动显示RGB
- 初探 C# GPU 通用计算技术
- Java: String.split(....); 结果很意外
- abaqus生成adams柔性体_1:ABAQUS有限元分析-ABAQUS软件介绍
- Spring中IoC创建对象方式(构造器注入)
- 松下plc驱动VF0变频器_2021厦门松下伺服马达回收现金回收
- HCIE RS 2019.11.05面试战报
- netdev_priv
- 论文索引平台EI,SCI
- 使用静态库的一些问题 -all_load
- TBSchedule初识
- redis 复制功能测试(转阿辉的百度空间)
- 光通信的再思考:5G流量爆发下的数据密度革命
- 团队管理之《十人以下小团队管理手册》
- 元旦给计算机老师的贺卡,一年级元旦给老师的贺卡祝福语
- 不成熟的梦想家 (未熟DREAMER)
- html语言编辑方法,Html双击使文字可编辑的方法