ConfigurationProvider с другими зависимостями - PullRequest
2 голосов
/ 29 мая 2020

Я реализовал свои обычаи 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. Как я могу использовать зависимости, которых в данный момент даже не существует?

...