Я реализовал свои обычаи IConfigurationProvider и IConfigurationSource.
public class MyConfigurationSource : IConfigurationSource
{
public string Foo { get; set; }
public IConfigurationProvider Build(IConfigurationBuilder builder)
{
return new MyConfigurationProvider(this);
}
}
internal class MyConfigurationProvider : ConfigurationProvider
{
public MyConfigurationSource Source { get; };
public MyConfigurationProvider()
{
Source = source
}
public override void Load()
{
// I'd like to assign here my configuration data by using some dependencies
Data = ....
}
}
Я выполняю сборку моей конфигурации в конструкторе запуска (я переопределяю конфигурацию, созданную CreateDefaultBuilder
): *
Метод расширения:
public static IConfigurationBuilder AddMyConfiguration(this IConfigurationBuilder builder, string foo)
{
return builder.Add(new MyConfigurationSource
{
Foo = url
});
}
I wi sh Я мог бы каким-то образом внедрить службы, которые будут использоваться в методе Load
. Проблема здесь в том, что конфигурация build
выполняется в конструкторе Startup. Я могу вводить только те зависимости, которые у меня есть в этом конструкторе: IWebHostEnvironment
, IHostEnvironment
, IConfiguration
и все, что я добавил при создании WebHost. Также эти зависимости должны быть переданы в тот момент, когда я вызываю метод расширения AddMyConfiguration
. Как я могу использовать зависимости, которых в данный момент даже не существует?