.Net6 控制台 讀取配置文件+依賴注入


.NET 6(控制台應用程序)配置文件加載與DI注入配置數據

一、配置文件

添加Nugget包Microsoft.Extensions.Configuration(ConfigurationBuilder) 和 Microsoft.Extensions.Configuration.Json(AddJsonFile)

 

        var config = new ConfigurationBuilder()
          .AddInMemoryCollection() //將配置文件的數據加載到內存中
          .SetBasePath(Directory.GetCurrentDirectory()) //指定配置文件所在的目錄
          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) //指定加載的配置文件  --划重點..記得始終復制
          .Build(); //編譯成對象  
二、與DI配合使用

添加Nugget包Microsoft.Extensions.DependencyInjection(ServiceCollection) 和 Microsoft.Extensions.Options.ConfigurationExtensions(AddOptions)

 

        var service = new ServiceCollection()
          .AddOptions() //注入IOptions<T>,才可以在DI容器中獲取IOptions<T>
          .Configure<Appsettings>(config.GetSection("Appsettings")) //注入配置數據

          .Configure<Appsettings>(t =>
          {
               t.Name = "Tom"; //修改Name的值,可以對注入的配置數據進行修改
          })
          .AddTransient<IUserService, UserService>() //注入服務
          .BuildServiceProvider(); //編譯
三、讀取配置文件的方法

1、普通使用

 

        Console.WriteLine(config["AllowedHosts"]); //獲取配置中的數據
       config["AllowedHosts"] = "test"; //修改配置對象的數據,配置對象的數據是可以被修改的。但是不會存放到JSON文件中,只在內存
       Console.WriteLine(config["AllowedHosts"]);//測試修改后的AllowedHosts值
       Console.WriteLine(config["LogLevel22222"]); //獲取配置文件中不存在數據也是不會報錯的
       Console.WriteLine(config["Logging:LogLevel"]); //獲取:Logging -> LogLevel 的值

2、通過構造函數,在DI容器中獲取配置文件

 

     //第一步:構造函數
   private readonly IOptions<Appsettings> _settings;
   public 構造函數(IOptions<Appsettings> setting)
  {
       _settings = setting;
  }
 //第二步:在方法里面取值的方式,如下
 _settings.Value.EmailFrom,
 _settings.Value.EnableSsl,
 _settings.Value.EmailHost,
  _settings.Value.IsBodyHtml,
四、使用服務Service

1、直接獲取服務(IUserService)

 

        var userService = service.GetService<IUserService>();
       Console.WriteLine(userService.GetInput(""));

2、通過構造函數依賴服務

 

    private readonly IUserService_userService;
   public 構造函數(IUserService iUserService)
  {
       _userService= iUserService;
  }
五、.Net Core控制台程序中文亂碼

安裝Nugget包:System.Text.Encoding.CodePages並在Main方法開始時注冊

 

        //編碼注冊
       Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
引用-.NET Core(控制台應用程序)配置文件加載與DI注入配置數據 - 簡書 (jianshu.com)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM