1
resposta

Service Provider e contrutor

Tive uma dúvida no código abaixo.

public class PedidoController : Controller
{
  private readonly IDataService _dataService;
  public PedidoController(IDataService dataService)
  {
    this._dataService = dataService;
  }

}

A construção automática do DataService só funciona por meio de parâmetros?

Chamá-lo diretamente não funciona?

public class PedidoController : Controller
{
  private readonly IDataService _dataService;
  public PedidoController()
  {
    this._dataService = services.dataService();<<--Teria como fazer algo do tipo funcionar?
  }    

}
1 resposta

Olá, Eduardo

Você pode até conseguir, porém você perde a facilidade proporcionada pelo mecanismo de injeção de dependência do ASP.NET Core. Num certo momento do curso, a classe DataService exige em seu construtor dois parâmetros:

        public DataService(Contexto contexto,
            IHttpContextAccessor contextAccessor)
        {
            this._contexto = contexto;
            this._contextAccessor = contextAccessor;
        }

Agora, como você vai passar os parâmetros Contexto e IHttpContextAccessor para esse construtor? Você não sabe direito, mas o ASP.NET Core sabe, porque a criação desses objetos usados como parâmetros já está configurada no arquivo Startup.cs. Por outro lado, construir esses parâmetros manualmente é bem doloroso. Eu mesmo nunca tentei.