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"  }}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章