.Net之配置文件自定义
生活随笔
收集整理的這篇文章主要介紹了
.Net之配置文件自定义
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前文講獲取配置文件內容的時候,是獲取默認的appsettings.json配置文件的配置,下面說明下如何進行自定義配置文件獲取
1. Json Provider
1.1 構建獨立的IConfiguration
編寫方法
????????public?static?IConfigurationRoot?LoadSettings(this?IHostEnvironment?env){return?new?ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory).AddJsonFile("common.json",?optional:?true,?reloadOnChange:?false).AddJsonFile("appsettings.json",?optional:?true,?reloadOnChange:?false).AddJsonFile($"appsettings.{env.EnvironmentName}.json",?optional:?true,?reloadOnChange:?false).AddEnvironmentVariables().Build();}在Startup構造函數的時候進行賦值替換IConfiguration
????????private?readonly?IConfiguration?_configuration;public?Startup(IWebHostEnvironment?env){_configuration?=?env.LoadSettings();}該操作添加的配置項,只在startup范圍生效。
1.2 在Progrom全局自定義配置
?public?static?IHostBuilder?CreateHostBuilder(string[]?args)?=>Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext,?config)?=>{var?env?=?hostingContext.HostingEnvironment;config.SetBasePath(env.ContentRootPath);config.AddJsonFile("devappsettings.json",?optional:?false,?reloadOnChange:?true);}).ConfigureWebHostDefaults(webBuilder?=>{webBuilder.UseStartup<Startup>();});注意:添加自定義文件的目錄要注意,可能會存在因為目錄問題所以找不到配置文件的情況。
2. Memory Provider
允許我們將一個應用程序配置直接配置到內存中,而不是像傳統方式那樣子必須制定一個物理文件。
????????????var?builder?=?new?ConfigurationBuilder();var?profileCollection?=?new?Dictionary<string,?string>{{"AuthorProfile:FirstName",?"Joydip"},{"AuthorProfile:LastName",?"Kanjilal"},{"AuthorProfile:Address",?"Hyderabad,?India"}};builder.AddInMemoryCollection(profileCollection);Configuration?=?builder.Build();使用
????????public?static?IHostBuilder?CreateHostBuilder(string[]?args)?=>Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext,?config)?=>{var?builder?=?new?ConfigurationBuilder();var?profileCollection?=?new?Dictionary<string,?string>{{"AuthorProfile:FirstName",?"Joydip"},{"AuthorProfile:LastName",?"Kanjilal"},{"AuthorProfile:Address",?"Hyderabad,?India"}};builder.AddInMemoryCollection(profileCollection);config.AddConfiguration(builder.Build());}).ConfigureWebHostDefaults(webBuilder?=>{webBuilder.UseStartup<Startup>();});然后就可以通過IConfiguration實例去獲取了。
3. 公共類獲取配置文件
引用組件
Microsoft.Extensions.Configuration.Json
????public?class?AppSettings{private?static?IConfiguration?Configuration?{?get;?set;?}public?AppSettings(IConfiguration?configuration){Configuration?=?configuration;}///?<summary>///?封裝要操作的字符///?</summary>///?<param?name="ps"></param>///?<returns></returns>public?static?string?GetValue(params?string[]?ps){try{if?(ps.Any())return?Configuration[string.Join(":",?ps)];}catch?(Exception){?}return?"";}///?<summary>///?遞歸獲取配置信息數組///引用?Microsoft.Extensions.Configuration.Binder?包///?</summary>///?<typeparam?name="T"></typeparam>///?<param?name="ps"></param>///?<returns></returns>public?static?List<T>?App<T>(params?string[]?ps){List<T>?list?=?new?List<T>();Configuration.Bind(string.Join(":",?ps),?list);return?list;}}參考自:https://gitee.com/laozhangIsPhi/Blog.Core
ConfigureServices中配置
services.AddSingleton(new?AppSettings(Configuration));獲取指定配置
var?info?=?AppSettings.GetValue("Logging",?"LogLevel");總結
以上是生活随笔為你收集整理的.Net之配置文件自定义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 回顾 | 在 GitHub 上贡献到开源
- 下一篇: .NET之Docker部署详细流程