Tecnologia

Injeção de Dependências em .NET 9: como evitar duplicação de código com chaves de dependência

Nesta live, os apresentadores discutem quando o modo simples de injeção de dependências pode ser limitante e como isso se alinha com as sugestões de boas práticas. O vídeo mergulha em exemplos práticos no .NET 9, mostrando cenários com lifetimes de DI (singleton, scoped e transient), uso de interfaces, e estratégias para evitar duplicação de código ao gerenciar várias dependências.

Shortfy
5 min de leitura

Introdução

Nesta live, os apresentadores discutem quando o modo simples de injeção de dependências pode ser limitante e como isso se alinha com as sugestões de boas práticas. O vídeo mergulha em exemplos práticos no .NET 9, mostrando cenários com lifetimes de DI (singleton, scoped e transient), uso de interfaces, e estratégias para evitar duplicação de código ao gerenciar várias dependências.

Resumo

  • O conteúdo começa com um exemplo baseado em controller e OpenAPI no .NET 9, apresentando A (singleton) e B (transient) com interfaces correspondentes. A ideia é mostrar que, em muitos cenários, injetar dependência via interface facilita a troca de implementação, mantendo o código flexível.
  • Em seguida, é discutido um caso prático de impressão fiscal (Daruma, Bematec) para ilustrar como a DI com interfaces pode facilitar a gestão de diferentes dispositivos sem duplicar lógica, bastando configurar a dependência pela implementação correta.
  • O apresentador aborda a duplicação de código quando várias dependências compartilham a mesma interface. A solução proposta envolve usar interfaces distintas (ou chaves/identificadores) para diferenciar dependências, evitando que A e B fiquem indistinguíveis.
  • Apresenta a novidade do .NET 9 sobre a injeção com chaves/identificadores (implementation factory) e a possibilidade de resolver dependências com base em uma chave específica, reduzindo duplicação de código em cenários com múltiplas implementações.
  • Por fim, o conteúdo mostra o comportamento dos lifetimes ao rodar chamadas: singleton mantém a mesma instância durante o ciclo de vida da aplicação, scoped varia por requisição e transient cria novas instâncias a cada envio. O vídeo também aponta temas para as próximas lives (console apps, Azure Functions – Isolated, Worker Service) e comenta ferramentas de teste de APIs (Postman vs Bruno) e práticas de HTTP Client.

Opinião e Análise

Sem opiniões explícitas no vídeo.

Insights e Pontos Fortes

  • Demonstra como evitar duplicação de código no DI ao usar chaves/identificadores para distinguir dependências que compartilham a mesma interface.
  • Ilustra a diferença prática entre lifetimes (Singleton, Scoped, Transient) e como afetam o comportamento entre requisições diferentes.
  • Apresenta a ideia de using implementation factories e delegates para inicializar dependências com lógica de construção personalizada, mantendo a configuração simples e legível.
  • Mostra a utilidade de usar interfaces para facilitar a troca de implementações (ex.: impressoras fiscais) sem mexer no código consumidor, reforçando o princípio de dependências por abstração.
  • Aborda cenários do mundo real (OpenAPI, Swagger, testabilidade, minimal APIs) e comenta implicações de ferramentas de API (Postman vs Bruno) em termos de segurança e práticas de desenvolvimento.

Palavras-chave

dotnetcsharpaspnetcoreaspnetdidependencyinjectionwindowsmacoslinuxcanaldotnetcortescortescanaldotnet

Gostou do conteúdo?

Descubra como o Shortfy pode transformar sua forma de consumir conteúdo do YouTube.