八、.net core(.NET 6)配置讀取appsettings文件內容的通用功能

 添加通用讀取配置文件功能

Wsk.Core.Package項目下,新增Microsoft.Extensions.Configuration包:

 

 

在啟動項目下,設置appsettings.json屬性為始終複製:

 

 

新建一個文件夾Common,用於存放工具類項目。並且新建項目:Wsk.Core.AppSettings,引用package包項目,然後新建一個讀取配置文件的通用類,叫AppHelper。目錄結構如圖:

 

 

AppHelper類裡面,新建靜態操作方法有關程式碼,用於讀取根目錄下的配置文件資訊:

 

 

程式碼:

  public class AppHelper
    {
        private static IConfiguration _config;

        public AppHelper(IConfiguration configuration)
        {
            _config = configuration;
        }

        /// <summary>
        /// 讀取指定節點的字元串
        /// </summary>
        /// <param name="sessions"></param>
        /// <returns></returns>
        public static string ReadAppSettings(params string[] sessions)
        {
            try
            {
                if (sessions.Any())
                {
                    return _config[string.Join(":", sessions)];
                }
            }
            catch
            {
                return "";
            }
            return "";
        }

        /// <summary>
        /// 讀取實體資訊
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="session"></param>
        /// <returns></returns>
        public static List<T> ReadAppSettings<T>(params string[] session)
        {
            List<T> list = new List<T>();
            _config.Bind(string.Join(":", session), list);
            return list;
        }
    }

View Code

 

在啟動項目下,新建文件夾ConfigServices,用於存放各種服務的添加項目。

現在,看下目前的啟動項下的ConfigureServices方法:

 

 

我們把該方法做個簡化。在ConfigServices下新建一個靜態類,叫 WskService,用於寫入各種自帶的方法進行集成;再新建一個靜態類SwaggerService,用於存放Swagger功能的集成:

 

 

然後,把swagger的功能進行移植,在SwaggerService類下面進行註冊:

 

再把上面有一個添加控制器的功能進行註冊到WskService下面。然後,把對swagger的註冊也加入到該服務下:

 

 

最後,在ConfigureServices下面把所有內容刪掉,然後添加WskServices的註冊:

 

 

接下來,添加對剛剛我們寫的讀取配置文件類的註冊。在ConfigureServices裡面進行添加註冊單例模式,放在註冊服務的最上面,這樣其他服務就可以在註冊時候也可以引用該功能進行讀取配置文件了:

 

 

 

現在做個測試,在配置文件裡面新建一段配置資訊:

 

 

json內容:

 "Test": {
    "A": "Hello",
    "B": {
      "C": "World"
    }
  }

 

在控制器方法裡面,做個列印測試:

 

 

示例程式碼: 

 [HttpPost]
        public IActionResult HelloWorld()
        {

           string a= AppHelper.ReadAppSettings("Test", "A");
            string b = AppHelper.ReadAppSettings("Test", "B", "C");
            return Ok($"{a} ***** {b}");
        }

View Code

 

啟動程式,並執行api,看看返回的結果:

 

 

返回成功,此篇完結。如果有用,歡迎評論、打賞、點贊或轉發。版權所有,轉發請註明出處://www.cnblogs.com/weskynet/p/14843324.html