Я пытаюсь понять концепцию внедрения зависимости на основе конструктора.Я видел несколько примеров кода constructor based dependency injection
с использованием интерфейсов.В фрагменте кода я видел, что конструктор класса обслуживания ожидает параметр типа interface
, но при создании объекта класса обслуживания передается экземпляр класса, который реализует этот интерфейс.Так почему же во время выполнения тип класса приводится к типу интерфейса или есть что-то еще?Что происходит за кулисами?
Позвольте мне поделиться некоторыми примерами кода -
Интерфейс -
Простой интерфейс для реализации
namespace constructor_di
{
interface IRepoInterface
{
string test();
}
}
Репозиторий -
Интерфейс реализации класса репозитория
namespace constructor_di
{
class Repository : IRepoInterface
{
public string test()
{
return "Test String";
}
}
}
Сервис -
Класс обслуживания, ожидающий, что IRepoInterface
будет передан при создании объекта
namespace constructor_di
{
class Service
{
private readonly IRepoInterface _repo;
public Service(IRepoInterface repoInterface)
{
_repo = repoInterface;
}
}
}
Запуск программы -
Создание здесь экземпляра класса Service
namespace constructor_di
{
class Program
{
static void Main(string[] args)
{
Service obj = new Service(new Repository());
}
}
}