Исключение нулевой ссылки из объекта

#c# #asp.net-core #asp.net-core-webapi #nullreferenceexception

#c# #asp.net-core #asp.net-core-webapi #исключение nullreferenceexception

Вопрос:

У меня есть приложение в asp.net ядро 2.1. Я зарегистрировал / внедрил HttpContextAccessor в файле startup.cs, как показано ниже.

 services.AddHttpContextAccessor();
  

Также я создал объект для интерфейса IHttpContextAccessor и инициировал этот объект в конструкторе класса внедрения зависимостей «GetScopedServicesTools»

  public readonly IHttpContextAccessor HttpContextAccessor;

 public GetScopedServicesTools(IHttpContextAccessor _httpContextAccessor)
 {
   HttpContextAccessor = _httpContextAccessor;
 }
  

Я создал объект для класса DI «GetScopedServicesTools», но не уверен, какое значение нужно передать конструктору этого класса.

 private GetScopedServicesTools getScopedServices;
  

Не могли бы вы, пожалуйста, помочь мне, какое значение нужно передать конструктору класса «GetScopedServicesTools».

Ответ №1:

Если вы хотите использовать этот класс с контейнером DI, вам также следует зарегистрироваться GetScopedServicesTools у поставщика услуг.

В вашем Startup.cs вы можете сделать services.AddScoped<GetScopedServicesTools>(); , а затем просто внедрить его в свои контроллеры или где угодно.

Примечание:

Однако я хотел бы отметить, что механизм DI уже предоставляет «из коробки» то, чего вы пытаетесь достичь с помощью своего GetScopedServicesTools класса. Вы можете просто ввести IHttpContextAccessor куда угодно, поскольку вы уже зарегистрировали его у поставщика услуг с помощью services.AddHttpContextAccessor(); . То, что вы делаете со своим дополнительным классом, является антишаблоном, и его следует избегать.