給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}");
相關文章
- Linux下編寫一個PHP擴充套件LinuxPHP套件
- PHP擴充套件開發教程2 – 編寫第一個擴充套件 hello worldPHP套件
- 寫一個Laravel中文驗證擴充套件包Laravel套件
- 寫一個ThinkPHP SwaggerV3 擴充套件包PHPSwagger套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- Json擴充套件方法JSON套件
- LINQ擴充套件方法套件
- ✍ 寫一個擴充套件性較強的搜尋主頁套件
- android view 擴充套件方法AndroidView套件
- 編寫可擴充套件程式套件
- Cython,一個簡化 Python 編寫 C 擴充套件的語言Python套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 再學Blazor——擴充套件方法Blazor套件
- 為Unity元件編寫擴充套件Unity元件套件
- 怎麼樣“抄“一個PHP擴充套件PHP套件
- 如何構建一個優雅擴充套件套件
- 從零寫一個自動生成API文件的laravel擴充套件包APILaravel套件
- [TIL] 使用scrcpy映象安卓裝置+編寫一個Raycast擴充套件安卓AST套件
- 8 個給前端的頂級 VS Code 擴充套件外掛前端套件
- 兩個簡單的擴充套件方法:TrimPrefix和TrimSuffix套件
- 寫個Markdown外掛,講講Chrome擴充套件開發Chrome套件
- 寫了個 Laravel 高效樹結構生成的擴充套件Laravel套件
- docker內給php安裝zmq擴充套件DockerPHPMQ套件
- [擴充套件]laravel-xlswriter 一款基於xlswriter的laravel擴充套件包 excel極速讀寫套件LaravelExcel
- Ace Editor 擴充套件編寫初步(轉)套件
- Java 缺失的特性:擴充套件方法Java套件
- tonyenc加密擴充套件使用方法加密套件
- chrome擴充套件推薦:此刻、今天、最近~一個關於時間管理的擴充套件 – MomentumChrome套件
- 來啊~一起敲一個chrome擴充套件Chrome套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 摸魚.....分享一個dcat-admin擴充套件套件
- 年輕人的第一個VSCode擴充套件VSCode套件
- 聊聊這一年寫的 SPS 音樂擴充套件套件
- 一步步入門編寫PHP擴充套件PHP套件
- 開源 - Ideal庫 - 常用列舉擴充套件方法(一)Idea套件
- springmvc redis @Cacheable擴充套件(一)SpringMVCRedis套件
- 基於GenericAPIView以及五個檢視擴充套件類寫介面APIView套件
- EFCore3.1+編寫自定義的EF.Functions擴充套件方法Function套件