.Net6 控制台 读取配置文件+依赖注入

1|0.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(); //编译成对象  
1|0二、与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|0三、读取配置文件的方法

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,
1|0四、使用服务Service

1、直接获取服务(IUserService)

 

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

2、通过构造函数依赖服务

 

   private readonly IUserService_userService;
   public 构造函数(IUserService iUserService)
  {
       _userService= iUserService;
  }
1|0五、.Net Core控制台程序中文乱码

安装Nugget包:System.Text.Encoding.CodePages并在Main方法开始时注册

 

       //编码注册
       Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
引用-.NET Core(控制台应用程序)配置文件加载与DI注入配置数据 - 简书 (jianshu.com)


__EOF__

本文作者永远不要停止学习的脚步
本文链接https://www.cnblogs.com/vsnb/p/15272617.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Bug专员  阅读(7548)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示