Net Core IOptions <AppSettings>use - PullRequest
       9

Net Core IOptions <AppSettings>use

0 голосов
/ 18 января 2019

Я следовал шаблону IOptions в проекте MVC и могу внедрить мои настройки приложений в мой контроллер:

public HomeController(IOptions<AppSettings> appSettings) {
    _appSettings = appSettings.Value;
}

У меня есть куча других классов, которые создаются из HomeController - могу ли я также напрямую в них внедрить или мне нужно передавать _appSettings для каждого экземпляра класса?

В идеале все мои классы вставляются в конструктор, как в Controller.

1 Ответ

0 голосов
/ 18 января 2019

Инъекция зависимостей - это все или ничего. Если вы собираетесь использовать DI, то вы всегда используете DI и практически никогда ничего не обновляете вручную (кроме базовых классов, таких как сущности без зависимостей). Другими словами, если ваш контроллер создает объекты, которые принимают зависимости, эти вещи должны быть зарегистрированы в коллекции сервисов и вместо этого внедрены в контроллер. Например, если вы делаете что-то вроде:

public HomeController(IOptions<AppSettings> appSettings)
{
    _appSettings = appSettings.Value;
}

public IActionResult Foo()
{
    var service = new FooService(_appSettings);

    // do something
}

Затем вы должны добавить в ConfigureServices:

services.AddScoped<FooService>();

А в вашем контроллере вы должны вместо этого делать:

public HomeController(FooService fooService)
{
    _fooService = fooService
}

Служба сбора данных позаботится о внедрении ваших параметров в службу, поскольку сама служба зависит от этого.

...