在netcore開發中,最常見的就是註入,比如想獲取appsettings.json的內容,我們就需要去註入,然後在controller裡面去獲取,但是我們如果想要在service中使用appsettings.json的內容,這樣就是一個問題,並且每個controller去註入也是非常麻煩的事情 下 ...
在netcore開發中,最常見的就是註入,比如想獲取appsettings.json的內容,我們就需要去註入,然後在controller裡面去獲取,但是我們如果想要在service中使用appsettings.json的內容,這樣就是一個問題,並且每個controller去註入也是非常麻煩的事情
下麵的註入的(這種方法百度一下可以出來幾百條相同的搜索結果。。。參見https://www.cnblogs.com/ideacore/p/6282926.html)
services.AddOptions(); services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
然後獲取使用
我想要在service類庫裡面使用,這時該如何使用哪?
直接上代碼:
public class AppSettings { public string TestString { get; set; } public string ConfigVersion { get; set; } public string connectionString { get; set; } public string RedisExchangeHosts { get; set; } public string UploadPath { get; set; } }
public Startup(IConfiguration configuration, ILoggerFactory factory, IHostingEnvironment env) { EnvironmentName = env.EnvironmentName; Configuration = configuration; // 將內置的日誌組件設置為 NHibernate 的日誌組件 var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)//增加環境配置文件,新建項目預設有 .AddEnvironmentVariables(); new AppSettingProvider().Initial(configuration); Configuration = builder.Build(); }
public class AppSettingProvider { private static AppSettings _myappSettings; public static AppSettings _appSettings { get { return _myappSettings; } } public void Initial(IConfiguration configuration) { _myappSettings = new AppSettings() { ConfigVersion = configuration["AppSettings:ConfigVersion"], connectionString = configuration["AppSettings:connectionString"], TestString = configuration["AppSettings:TestString"], RedisExchangeHosts = configuration["AppSettings:RedisExchangeHosts"], UploadPath = configuration["AppSettings:UploadPath"] }; } }
這樣,我們在要使用的時候只需要AppSettingProvider._appSettings.xxxx即可,不需要進行重覆的、實現
有錯誤或者片面地方歡迎指正