美文网首页
.NET Core(控制台应用程序)配置文件加载与DI注入配置数

.NET Core(控制台应用程序)配置文件加载与DI注入配置数

作者: JADDC | 来源:发表于2019-04-04 14:07 被阅读0次
一、配置文件

添加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注入配置数

      本文链接:https://www.haomeiwen.com/subject/zpjfiqtx.html