При использовании следующего кода:
Email sendEmail = new Email();
Система DI вообще не задействована - вы взяли вещи в свои руки. Вместо этого вы должны добавить Email
в систему DI и затем ввести it . e.g.:
services.AddSingleton<Email>(); // You might prefer AddScoped, here, for example.
Тогда, например, если вы обращаетесь к Email
в контроллере, вы также можете ввести его:
public class SomeController : Controller
{
private readonly Email _email;
public SomeController(Email email)
{
_email = email;
}
public IActionResult SomeAction()
{
// Use _email here.
...
}
}
По сути, это просто означает, что вам нужно полностью использовать DI. Если вы хотите предоставить более подробную информацию о , где вы в настоящее время создаете свой класс Email
, я могу привести примеры к этому подробнее.
Это немного отчасти, но вы также можете вводить зависимости, используя атрибут [FromServices]
внутри действия. Используя это означает, что вы можете пропустить подход конструктора и частного поля. e.g.:
public class SomeController : Controller
{
public IActionResult SomeAction([FromServices] Email email)
{
// Use email here.
...
}
}