ASP.NET Core???????2??????????????
???????????? ???????[ 2016/6/2 14:19:09 ] ?????????????????? ???霉???
?????????????????????????????????????????????????????????婕�?????????????????????????????????????Configuration????????????????ConfigurationProvider????????“?屑???”??ConfigurationBuilder???????????????????????????????????????????????????????????????????斜??????????????????????????????????????????
?????????????????
???????????????胁????????????????????????????????????????????????????????????????Configuration???????????????????????????????????位????谓??????t??卸??????????????????????????????????????????????????????????????y????????????????????????????????????????????????????????屑?????????????????????
?????????
????????????????Configuration?????????????????????????????????Configuration?????API????????????????????械?Configuration???????????????????????????????????????????????谓??????????????????????????????????????????Configuration????????????????????????娲�????????校????????????????????????y?????????????????????????????????????????????????????FormatSettings???????????????t????????????????????
????????
???????貌????????????????????????煤??????????????????????????????????????????????????????????????????????????????????????????????????FormatSettings??????????????????渭??????XML??JSON???????????????谩?
????XML:
1: <Format>
2: <DateTime>
3: <LongDatePattern>dddd?? MMMM d?? yyyy</LongDatePattern>
4: <LongTimePattern>h:mm:ss tt</LongTimePattern>
5: <ShortDatePattern>M/d/yyyy</ShortDatePattern>
6: <ShortTimePattern>h:mm tt</ShortTimePattern>
7: </DateTime>
8: <CurrencyDecimal>
9: <Digits>2</Digits>
10: <Symbol>$</Symbol>
11: </CurrencyDecimal>
12: </Format>
????JSON:
1: {
2: "format": {
3: "dateTime": {
4: "longDatePattern" : "dddd?? MMMM d?? yyyy"??
5: "longTimePattern" : "h:mm:ss tt"??
6: "shortDatePattern" : "M/d/yyyy"??
7: "shortTimePattern" : "h:mm tt"
8: }??
9: "currencyDecimal": {
10: "digits": "2"??
11: "symbol": "$"
12: }
13: }
14: }
?????????
????table???????????????????????????????????????????薪?????????????????????????????????????????Configuration?????????????????????????????屑???????????????????????????????????????????????FormatSettings????????????????y????????卤?????????????
?????????
????transfer???????????????????胁????????????????Configuration???????????Configuration?????????????????????????????????????????????????????????????????????????????????????????校???????????????????????????ConfigurationProvider??????????????????????????????????????????????????ConfigurationBuilder????Configuration?????????????????????????????????????
????????Configuration
?????????????????????????????????Configuratin??ConfigurationProvider??ConfigurationBuilder???????????????????????????????????????????????????????????????????????????????Configuration???????2???????Configuration????????????IConfiguration????????y???????“Microsoft.Extensions.Configuration”????????锟�????未???????????????婕�????????????????????????????????????
????1: public interface IConfiguration
????2: {
????3: IEnumerable<IConfigurationSection> GetChildren();
????4: IConfigurationSection GetSection(string key);
????5: IChangeToken GetReloadToken();
????6:
????7: string this[string key] { get; set; }
????8: }
???????t?????????????????Configuration????????????????????y????????????????????????y????????????????Configuration???????????????y???Configuration?????????胁??????????????????????貌??????????????????????????????????Configuration??????????IConfigurationRoot?????????????IConfigurationSection????????????Configuration???????????????IConfiguration????????????????????????????????ConfigurationRoot????????ConfigurationSection???伞?
????ConfigurationRoot
??????????????????IConfigurationRoot??????????????????ConfigurationRoot????????????????????IConfigurationRoot????????????????Reload????????????????????????ConfigurationRoot?????????????????????????????????????????????????????????????????????????????
????1: public interface IConfigurationRoot : IConfiguration
????2: {
????3: void Reload();
????4: }
????ConfigurationSection
??????????????????IConfigurationSection??????????????????ConfigurationSection?????ConfigurationSection??????????????????????y??IConfigurationSection????????????????????????Key??????????“???”???y????????????????Path????????????????路??????路????ConfigurationSection??Key??????????e???????????Path??Key????????????????y??????????????械?位?谩?
????1: public interface IConfigurationSection : IConfiguration
????2: {
????3: string Path { get; }
????4: string Key { get; }
????5: string Value { get; set; }
????6: }
????IConfigurationSection??Value?????????y??????????????锟�???????????????????ConfigurationSection??????????????????????ConfigurationSection?????????????????????????????????????y????????????????Value?????Null???????????????Value???????????????????????写???
???????ConfigurationRoot??ConfigurationSection???谢????????????????????????????????IConfiguration?械?????????GetChildren????????????????????y??ConfigurationSection????????????????GetSection??????????Key????????ConfigurationSection??????GetSection??????械???????????????????ConfigurationSection??Path???????????????ConfigurationSection?????路????????????????梅????????????????????????y??路??????????????????????渭???????y??
1: Dictionary<string?? string> source = new Dictionary<string?? string>
2: {
3: ["A:B:C"] = "ABC"
4: };
5: IConfiguration root = new ConfigurationBuilder()
6: .Add(new MemoryConfigurationProvider(source))
7: .Build();
8:
9: IConfigurationSection section1 = root.GetSection("A:B:C");
10: IConfigurationSection section2 = root.GetSection("A:B").GetSection("C");
11: IConfigurationSection section3 = root.GetSection("A").GetSection("B:C");
12:
13: Debug.Assert(section1.Value == section2.Value && section2.Value == section3.Value);
14: Debug.Assert(!ReferenceEquals(section1?? section2) && !ReferenceEquals(section2?? section3));
15: Debug.Assert(null == root.GetSection(Guid.NewGuid().ToString()));
??????????????????????????????????????GetSection????????????路???“Format:DateTime:LongDatePattern”??ConfigurationSection????????未????????????????????????????????ConfigurationSection???????????????????????????????????????????????浠�????????????GetSection???????????????????????????????????路?????????y????????????????渭?ConfigurationSection????
????IConfiguration??????????????????????????????y??Key????????????y??路???????????y????????????????械????????????GetSection?????????渭??????????ConfigurationSection????????????Value???????????????胁????????????y????????????Null?????????????
??????

???路???
??????????????????
2023/3/23 14:23:39???写?貌??????????
2023/3/22 16:17:39????????????????????些??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???路???????路
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11