.NET Core 目前大多都是透過相依性注入(Dependency Injection)的方式來有效管理程式碼,方便大家在program.cs中先建置.NET Core 程式專案的一些基本設置,像是相依性插入 (DI)、設定、中介軟體等,當專案一啟動時就被建置或設定。
通常大家會習慣將一些資訊記錄有appsetting.json檔中,像是資料庫的連線,.NET Core初期仍需要安裝Microsoft.Extensions.Configuration 套件,來取得appsetting.json內容,以 .NET Core 6 為例,後期的.NET Core已經內建Configuration。
目前遇到的例子是,早期自行撰寫的共用物件(DBUtil)已經在各程式中被廣泛引用,目前先不打算異動原來的程式碼,原因是如果一改的話,所有有呼叫到的程式都要修改,所以我們並非透過相依性注入(Dependency Injection),而是透過中介的靜態類別,像建立一個Single Object 。
作法:在program.cs中先設置好Configuration並取得appsetting.json的資料庫連結資訊,再把Configuration傳遞到手動新增的靜態類別ConfigurationHelper中,最後在共用物件(DBUtil)的建構子中來取得Configuration。
1.先新增一個靜態類別叫ConfigurationHelper
2. 在Program.cs中,完成Configuration的設置(例如取得appsetting.json內的資料庫連線資料),接下來再把Configuration傳遞到剛剛建立的ConfigurationHelper靜態類別中。
3. 最後在我們自已的公用程式物件,在建構子來取得靜態類別ConfigurationHelper來取得需要的內容,透過Configuration.GetConnectionString的方式來存取appsettings.json的連線資訊。