YAML是一種更適合人閱讀的文件格式,很多大型的項(xiàng)目像Ruby on Rails都選擇YAML作為配置文件的格式。如果項(xiàng)目的配置很少,用JSON或YAML沒(méi)有多大差別??纯磖ails項(xiàng)目中的配置文件,如果用JSON寫(xiě)試試什么感受吧。
在《實(shí)現(xiàn)自己的.NET Core配置Provider之EF》中已經(jīng)講過(guò)配置的執(zhí)行流程,這里不再?gòu)?fù)述,直接動(dòng)手。
YamlConfigurationProvider
Yaml是基于文件的,可以直接從FileConfigurationProvider
繼承,在FileConfigurationProvider實(shí)現(xiàn)了監(jiān)控文件變化并自動(dòng)重新加載的功能。
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文件的核心,后面會(huì)介紹。
YamlConfigurationSource
internal class YamlConfigurationSource : FileConfigurationSource{ public override IConfigurationProvider&