#dependency-injection #.net-core
#внедрение зависимостей #.net-core
Вопрос:
В моем приложении у меня есть сервис, который принимает некоторые настройки в своем конструкторе
public class Service
{
private readonly Settings _settings
public Service(Settings settings)
{
_settings = settings;
}
}
public class Settings
{
// omitted for brevity
}
При настройке DI Startup.cs
я добавляю службу:
services.AddTransient<Service>();
Я не знаю, как настроить контейнер DI для использования
Settings
объекта. Как я могу это сделать?
Я прочитал официальную документацию, но я не вижу, как это сделать
Ответ №1:
Внедрение зависимостей в .NET работает через интерфейсы. В вашем случае вам нужно будет создать интерфейс, что-то вроде
public interface ISettings
{
// necessary methods
}
и заставьте ваш Settings
класс реализовать этот интерфейс. Затем вам нужно будет изменить свой Service
класс и заменить class интерфейсом:
public class Service
{
private readonly ISettings _settings
public Service(ISettings settings)
{
_settings = settings;
}
}
и, наконец, зарегистрируйте свой класс Settings
в Startup.cs
:
services.AddTransient<ISettings, Settings>();