要修改 GetSection 方法的内容,需要自定义一个 IConfiguration 实现类,并通过 builder.Services.AddSingleton 注册为服务。示例如下:
public class MyConfiguration : IConfiguration
{
private IConfiguration _innerConfig;
public MyConfiguration(IConfiguration config)
{
_innerConfig = config;
}
public IConfigurationSection GetSection(string key)
{
// your custom implementation
return _innerConfig.GetSection(key);
}
public IEnumerable GetChildren()
{
return _innerConfig.GetChildren();
}
public IChangeToken GetReloadToken()
{
return _innerConfig.GetReloadToken();
}
public string this[string key]
{
get => _innerConfig[key];
set => _innerConfig[key] = value;
}
}
public void ConfigureServices(IServiceCollection services)
{
// build your configuration
var configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddJsonFile("appsettings.json", optional: false);
var config = configurationBuilder.Build();
// register your custom configuration
services.AddSingleton(new MyConfiguration(config));
}