.net core Winform 添加DI和讀取配置、添加log

首先新建配置類

 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的變化

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章