希望給你3-5分鐘的碎片化學習,可能是坐地鐵、等公交,積少成多,水滴石穿,謝謝關注。

配置的使用流程

複製程式碼
//第一步.初始化Builder
var builder = new ConfigurationBuilder();
//第二步.將Source新增到Builder
builder.AddJsonFile("student.json", false, true);
//builder.AddInMemoryCollection(dict)
//builder.AddXmlFile("/path/tmp.xml")
 
//第三步.呼叫Build
var configuration = builder.Build();
//第四步.使用
configurationRoot["key"]
複製程式碼

第二步,在將Source新增到Builder的時候,內部做了哪些事情呢?

初始化對應的Source物件,比如Json檔案配置源物件:

JsonConfigurationSource sr=new 
JsonConfigurationSource()
{
 Path = "settings.json",
}

 

第三步,Build時候在內部,生成Provider物件,一個Source對應一個Provider,最後返回ConfigurationRoot,該Root包含所有的Provider。

複製程式碼
foreach(var source in sources)
{
 var provider = source.Build();
 providers.add(provider);
}
return new ConfigurationRoot(providers);
複製程式碼

 

第四步,在使用的時候,通過Provider去找到相應的key,返回key值。

複製程式碼
foreach(var provider in providers.Reverse())
{
 string value;
 provider.TryGet(key,out value);
 return value;
}
複製程式碼

 

通過以上步驟,我們可以看到配置Source和配置Provider是關鍵的兩個要點。

內部類關係圖

2.5配置的框架淺析「深入淺出ASP.NET Core系列」

 

2.5配置的框架淺析「深入淺出ASP.NET Core系列」

 

如果所示,如果要自己定義配置,必須實現介面IConfigurationSource,並在內部實現一個對應的Provider,該Provider必須繼承ConfigurationProvider抽象類,並在Provider讀取配置,對配置進行維護、同步、熱更新。具體如何定製,在後續進階和高階進行講解。

我是.NET架構師張飛洪,入行10年有餘,人不堪其憂,吾不改其樂,謝謝您關注我的頭條號