深入理解.NET Core中的配置Configuration和应用

Providers { get; } }

## 实现自定义配置提供程序
实现自定义配置提供程序,其实只需要实现三个类就可以,一个是配置源、一个是配置提供程序、一个是针对当前配置的扩展方法。第三个类可有可无,不过我们一般都要实现。我们来参考下基于命令行的配置提供程序类库的文件。
![](https://cdn.res.knowhub.vip/c/2504/19/74ac3f21.png?G1QAAMT0bJworVNsox%2f6n3gkNAMSVQSVetbrvXefRvT9xoGTf2Yfy86HP%2fSxjHKGFhAHRkhwPiqLAEUzO40QFKnV72k%3d)
接下来,我们来实现一个基于数据库的配置提供程序,分别实现配置源`DataBaseConfigurationSource `、配置提供程序`DataBaseConfigurationExtensions `和扩展方法类`DataBaseConfigurationExtensions`,当然在这里我们只做对应的演示,没有实现具体的配置方法。
```csharp
public class DataBaseConfigurationSource : IConfigurationSource
{
    public IConfigurationProvider Build(IConfigurationBuilder builder)
    {
        return new DataBaseConfigurationProvider();
    }
}
public class DataBaseConfigurationProvider : ConfigurationProvider
{
    public override void Load()
    {
        base.Load();
        //读取数据库配置
    }
}
public static class DataBaseConfigurationExtensions
{
    public static IConfigurationBuilder AddDb(this IConfigurationBuilder configurationBuilder)
    {
        configurationBuilder.Sources.Add(new DataBaseConfigurationSource());
        return configurationBuilder;
    }
}

调用自定义配置程序

static void Main(string[] args)
{
    var builder = new ConfigurationBuilder()
        .AddDb()
        .Build();
    var value = builder["key"];
}