首先新建配置類
public class CaptureOption { /// <summary> /// 是否自啟 /// </summary> public bool AutoStart { get; set; } /// <summary> /// 是否設置為壁紙 /// </summary> public bool SetWallpaper { get; set; } = true; }
然后添加appsettings.json, 復制到輸出目錄選擇 如果較新則復制
"CaptureOptions": { "AutoStart": false, "SetWallpaper": true }
nuget 安裝
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Options.ConfigurationExtensions
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.Debug
如果需要httpclientFactory則還需要安裝 Microsoft.Extensions.Http
最后是main函數里配置
static void Main() { Application.SetHighDpiMode(HighDpiMode.SystemAware); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //添加配置讀取 var config = new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .Build(); //添加DI var services = new ServiceCollection(); services.AddOptions(); services.AddSingleton(config); services.Configure<CaptureOption>(config.GetSection("CaptureOptions")); services.AddLogging(builder => { builder.AddDebug(); //添加日志輸出
});
//添加主窗體為單例
services.AddSingleton(typeof(MainForm));
var serviceProvider = services.BuildServiceProvider();
Application.Run(services.BuildServiceProvider().GetRequiredService<MainForm>()); }
最后通過注入IOptionsSnapshot 能監聽到appsettings.json的變化