Внедрение конфигурации Razor Pages 3.1 в класс - PullRequest
0 голосов
/ 27 февраля 2020

Внедрение конфигурации не работает внутри простого класса (не унаследованного от PageModel), где я храню свой код

Несмотря на этот код:

private readonly IConfiguration _configuration;

public MyClass(IConfiguration configuration){
_configuration = configuration;
}

класс, однажды инициализированный как объект всегда запрашивает параметр configuration, который должен быть введен платформой. Вот как это работает для Razor Pages - классы, унаследованные от PageModel.

Все конфигурации в Program.cs и Startup.cs являются стандартными, как и в Visual Studio. Я использую Visual Studio 16.4.5 и ASP. NET Core 3.1.

Как я могу заставить эту работу работать?

1 Ответ

1 голос
/ 27 февраля 2020

Если вы вводите IConfiguration в пользовательский класс, вы можете зарегистрировать свой класс в DI, чтобы он помог восстановить зависимость:

services.AddTransient<CustomClass>();

Затем определите экземпляр, в котором вы хотите использовать пользовательский класс, например , на главной странице:

private readonly ILogger<IndexModel> _logger;
private CustomClass _myClass;
public PrivacyModel(ILogger<IndexModel> logger, CustomClass myClass)
{
    _logger = logger;
    _myClass = myClass;
}

public void OnGet()
{
    var connectString=   _myClass.getConnectString();
}

Ваш класс:

public class CustomClass
{
    private IConfiguration _configuration;

    public CustomClass(IConfiguration configuration) {
        _configuration = configuration;

    }

    public string getConnectString() {

        return  _configuration.GetValue<string>("ConnectionStrings:DefaultConnection"); ;
    }
}
...