當前位置: 妍妍網 > 碼農

揭秘.NET Core控制台程式:如何優雅地讀取配置、註入依賴、配置日誌與使用IOptions

2024-02-25碼農

在.NET Core中,控制台程式不僅是簡單的命令列套用,它也可以是一個功能強大的、可配置和可延伸的應用程式。本文將指導您如何優雅地在.NET Core控制台程式中讀取 appsettings.json 配置檔、註入依賴、配置日誌以及使用 IOptions 模式。

一、讀取 appsettings.json 配置檔

appsettings.json 是.NET Core計畫中的標準配置檔,用於儲存應用程式的設定。在控制台應用程式中,您可以輕松地讀取這個檔中的值。

首先,添加 appsettings.json 到您的計畫中,並填充必要的配置資訊。

{
"Logging": {
"LogLevel": {
"Default""Information",
"Microsoft""Warning",
"MyNamespace""Debug"
}
},
"CustomSettings": {
"Setting1""Value1",
"Setting2""Value2"
}
}

然後,在您的控制台應用程式中,建立一個配置類來對映 appsettings.json 中的設定。

public classSettings
{
public LoggingSettings Logging { getset; }
public CustomSettings CustomSettings { getset; }
}
public classLoggingSettings
{
public Dictionary<string, LogLevel> LogLevel { getset; }
}
public classCustomSettings
{
publicstring Setting1 { getset; }
publicstring Setting2 { getset; }
}

Program.cs 中,配置依賴註入容器以使用這些設定。

publicstatic IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
// 配置其他配置源...
})
.ConfigureServices((hostContext, services) =>
{
services.Configure<Settings>(hostContext.Configuration.Getp("CustomSettings"));
services.AddSingleton<IOptions<Settings>>(sp => sp.GetRequiredService<IOptionsMonitor<Settings>>().CurrentValue);
// 配置其他服務...
});

二、註入依賴

使用依賴註入(DI)模式,您可以輕松地將服務註入到控制台應用程式中。在上面的 CreateHostBuilder 方法中,您可以註冊服務並指定它們的作用域(例如,單例、作用域或瞬態)。

三、配置日誌

appsettings.json 中,我們配置了日誌級別。要使這些設定生效,您需要配置日誌提供程式,如Console或Debug。

services.AddLogging(builder =>
{
builder.AddConfiguration(hostContext.Configuration.Getp("Logging"));
builder.AddConsole();
builder.AddDebug();
});

四、使用 IOptions

IOptions 模式允許您輕松地存取配置數據。在上面的 ConfigureServices 方法中,我們添加了 IOptions<Settings> 到服務容器中,這樣我們就可以在應用程式的任何地方註入 IOptions<Settings> 來存取配置數據。

public classMyService
{
privatereadonly Settings _settings;
publicMyService(IOptions<Settings> options)
{
_settings = options.Value;
}
publicvoidDoSomething()
{
// 使用_settings中的值
}
}

五、總結

透過上述步驟,您已經掌握了在.NET Core控制台程式中如何讀取 appsettings.json 配置檔、註入依賴、配置日誌和使用 IOptions 模式的基本知識。這些技術可以幫助您構建更加健壯、可延伸和可維護的.NET Core控制台應用程式。