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&