netcore中使用构造函数依赖注入读取配置文件

第一步:建立配置文件

.netcore的MVC项目在创建时会自动生成appsettings.json文件,如下:

复制代码
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "DB": {
    "SqlServerConnectionString": "SqlServer库连接",
    "MySqlConnectionString": "MySql库连接",
    "DmConnectionString": "达梦库连接",
    "DbType": "DM"
  }
}
复制代码

第二步:建立实体类

    public class DbSettings
    {
        public string DbType { get; set; }
        public string SqlServerConnectionString { get; set; }
        public string DmConnectionString { get; set; }

    }

第三步:Programs.cs 文件的var app = builder.Build();的上方加入以下代码:

//清晰版
ConfigurationBuilder configBuilder = new ConfigurationBuilder();
configBuilder.AddJsonFile("appsettings.json");
IConfigurationRoot root = configBuilder.Build();
builder.Services.AddOptions()
    .Configure<DbSettings>(root.GetSection("DB").Bind);

下面的是上面语句的链式简化版,作用相同。

复制代码
//简化版
builder.Services.AddOptions()
    .Configure<DbSettings>
    (
        new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build()
            .GetSection("DB")
            .Bind
    );
复制代码

第四步:Controller中注入

复制代码
public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;
    private readonly IOptionsSnapshot <DbSettings> _optConfig;
    public HomeController(ILogger<HomeController> logger, IOptionsSnapshot<DbSettings> optConfig)
    {
        _logger = logger;
        this._optConfig = optConfig;
    }

    public IActionResult Index()
    {
        string s = _optConfig.Value.SqlServerConnectionString;
        string dm = _optConfig.Value.DmConnectionString;
        string result = string.Concat(s," , " ,dm,"");
        
        return Content(result);
    }
}
复制代码

 

 

{  "Logging": {    "LogLevel": {      "Default": "Information",      "Microsoft.AspNetCore": "Warning"    }  },  "AllowedHosts": "*",  "DB": {    "SqlServerConnectionString": "SqlServer库连接",    "MySqlConnectionString": "MySql库连接",    "DmConnectionString": "达梦库连接",    "DbType": "DM"  }}
posted @   火军刀  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
历史上的今天:
2011-03-24 《架构实战-软件架构设计的过程》
点击右上角即可分享
微信分享提示