YAML是一種更適合人閱讀的文件格式,很多大型的項目像Ruby on Rails都選擇YAML作為配置文件的格式。如果項目的配置很少,用JSON或YAML沒有多大差別??纯磖ails項目中的配置文件,如果用JSON寫試試什么感受吧。
在《實現(xiàn)自己的.NET Core配置Provider之EF》中已經(jīng)講過配置的執(zhí)行流程,這里不再復(fù)述,直接動手。
YamlConfigurationProvider
Yaml是基于文件的,可以直接從FileConfigurationProvider
繼承,在FileConfigurationProvider實現(xiàn)了監(jiān)控文件變化并自動重新加載的功能。
internal class YamlConfigurationProvider : FileConfigurationProvider{ public YamlConfigurationProvider(FileConfigurationSource source) : base(source) { } public override void Load(Stream stream) { var parser = new YamlConfigurationFileParser(); Data = parser.Parse(stream); } }
YamlConfigurationParser
是解析Yaml文件的核心,后面會介紹。
YamlConfigurationSource
internal class YamlConfigurationSource : FileConfigurationSource{ public override IConfigurationProvider&