1
resposta

Gostaria de saber por quê do extrair uma interface do DataService, qual é o objetivo? uma boa pratica ou obrigatoriedade?

Por quê do extrair uma interface do DataService?

1 resposta

Olá, Murilo

O uso da interface é necessário para usarmos o sistema de injeção de dependência do ASP.NET Core MVC.

No arquivo Startup.cs, configuramos o mapeamento entre a interface IDataService e o tipo concreto (classe) DataService. Assim, sempre que um objeto precisar ser construído automaticamente pelo ASP.NET Core MVC, e o construtor desse objeto contiver a interface IDataService, o framework saberá qual instância de classe ele precisará criar (DataService) para fornecer a esse novo objeto.

https://github.com/alura-cursos/webapp-asp-net-core-parte-2/blob/master/Aula5/CasaDoCodigo/Startup.cs

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    .
    .
    .
    services.AddTransient<IDataService, DataService>();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory,
    IServiceProvider serviceProvider)
{
    .
    .
    .
    IDataService dataService = serviceProvider
        .GetService<IDataService>();
    .
    .
    .
}