給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}");
相關文章
- PHP擴充套件開發教程2 – 編寫第一個擴充套件 hello worldPHP套件
- Linux下編寫一個PHP擴充套件LinuxPHP套件
- 寫一個Laravel中文驗證擴充套件包Laravel套件
- 寫一個針對IQueryable<T>的擴充套件方法支援動態排序套件排序
- 如何編寫一個獨立的 PHP 擴充套件PHP套件
- 關於給apache新增PHP擴充套件的方法ApachePHP套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- 寫一個ThinkPHP SwaggerV3 擴充套件包PHPSwagger套件
- Chrome第一個擴充套件程式Chrome套件
- INFORMIX表的預設初始擴充套件、下一個擴充套件資料塊以及一個表允許的最大擴充套件數。ORM套件
- ✍ 寫一個擴充套件性較強的搜尋主頁套件
- Json擴充套件方法JSON套件
- LINQ擴充套件方法套件
- 編寫可擴充套件程式套件
- 我的第一個Emacs擴充套件Mac套件
- [TIL] 使用scrcpy映象安卓裝置+編寫一個Raycast擴充套件安卓AST套件
- 為Unity元件編寫擴充套件Unity元件套件
- 利用Delphi編寫IE擴充套件套件
- 再學Blazor——擴充套件方法Blazor套件
- C#.NET擴充套件方法C#套件
- android view 擴充套件方法AndroidView套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- C# 擴充套件方法 借籤於 Objective-C 擴充套件類.C#套件Object
- 怎麼樣“抄“一個PHP擴充套件PHP套件
- 如何構建一個優雅擴充套件套件
- 如何開發一個 Notadd 擴充套件套件
- 從零寫一個自動生成API文件的laravel擴充套件包APILaravel套件
- 編寫自己的php擴充套件函式(一) (轉)PHP套件函式
- 8 個給前端的頂級 VS Code 擴充套件外掛前端套件
- docker內給php安裝zmq擴充套件DockerPHPMQ套件
- 寫了個 Laravel 高效樹結構生成的擴充套件Laravel套件
- 寫個Markdown外掛,講講Chrome擴充套件開發Chrome套件
- [擴充套件]laravel-xlswriter 一款基於xlswriter的laravel擴充套件包 excel極速讀寫套件LaravelExcel
- 兩個簡單的擴充套件方法:TrimPrefix和TrimSuffix套件
- Ace Editor 擴充套件編寫初步(轉)套件
- 利用Delphi編寫IE擴充套件 (轉)套件
- tonyenc加密擴充套件使用方法加密套件
- Java 缺失的特性:擴充套件方法Java套件