2017-02-06 3 views
0

Эта проблема отличается, я знаю, что такое DI, но я хочу знать, как использовать asp.net core для использования DI. Мы можем настроить собственное ведение журнала в ASP.NET Core, но я не знаю, почему он работает.Реализация DI в Asp.net Core

Обычно мы используем ключевое слово new для создания экземпляра класса, а затем мы можем использовать его в контроллере. В ASP.NET Ядра мы используем конструктор контроллера с параметром, как показано ниже:

public class HomeController : Controller 
{ 
    private readonly ILogger _logger; 
    public HomeController(ILogger<HomeController> logger) 
    { 
     _logger = logger; 
    } 
} 

Я знаю, что такое шаблон называется Dependency Injection, но мне интересно, как это реализовано. Как команда ASP.NET Core осознала это?

+0

Ваш вопрос непонятен. Вы можете перефразировать свой вопрос. Вы «интересуетесь глубиной реализации этого»? Какие? – Steven

+0

@Steven Мне интересно, когда ILogger инициализируется в общедоступном HomeController (ILogger logger) или когда регистратор получает значение? –

+1

Возможный дубликат [Что такое инъекция зависимостей?] (Http://stackoverflow.com/questions/130794/what-is-dependency-injection) – NightOwl888

ответ

0

В зависимости от впрыска и инверсии управляющего жаргона то, что вводится, называется «услугой».

При запуске приложения вы регистрируете свои сервисы с помощью контейнера IoC, что означает: вы привязываете конкретные реализации и срок службы до определенного типа.

Теперь, когда контроллер должен обслуживать входящий запрос, MVC будет использовать фабрику контроллера для поиска и создания экземпляра соответствующего контроллера. Когда этот контроллер имеет параметры конструктора, он попросит контейнер IoC разрешить требуемые параметры сервиса.

Дополнительная информация о docs.microsoft.com: Dependency injection into controllers.

+0

Можете ли вы поделиться со мной ключевым кодом, связанным с «фабрикой контроллеров для поиска и создания экземпляра соответствующий контроллер. Когда у этого контроллера есть параметры конструктора, он попросит контейнер IoC разрешить необходимые параметры обслуживания ». Мне интересно, как контейнер IoC разрешить необходимые параметры сервиса. –

+2

Вы можете поместить каждый из этих поисковых запросов в свою любимую систему поиска в Интернете. Подробное объяснение того, как создать контейнер IoC, будет слишком широким и не вписываться в один ответ. Соответствующим ключевым словом является «отражение», используемое для проверки типов и методов во время выполнения. – CodeCaster

Смежные вопросы