Sitemap

Usando Keyed Services no .Net 8

2 min readMay 9, 2024
Usando Keyed Services no .Net 8

O .NET 8 introduziu a possibilidade de “dar nomes” aos serviços e assim podermos obter através de injeção de dependência através de uma referência que pode ser um nome, número, enum, objeto.

Exemplo 1: utilizando strings para definir os nomes

Press enter or click to view image in full size
instanciando no program.cs a injeção de dependência usando keyed services
Press enter or click to view image in full size
consumindo a injeção de dependência com keyed services em minimal api

Um ponto fraco é a possibilidade de haver divergência, além do que ficar criando strings pelo código não é nada bonito e gera redundância desnecessária !

Melhorando

Exemplo 2: aqui ao invés de um literal, colocamos um Enum para que o nome seja identificado de forma única evitando assim um erro ao digitar a palavra chave para obtenção.

Press enter or click to view image in full size
instanciando no program.cs a injeção de dependência usando keyed services
Press enter or click to view image in full size
consumindo a injeção de dependência com keyed services em minimal api

Neste caso criamos um Enum com propriedades que identificam o serviço

enum utilizado para nomear os serviços

Utilidade

Tá ok, mas qual a utilidade prática em utilizar isso?

Digamos que em alguns casos tenhamos uma interface sendo utilizada para gerar inúmeros serviços que possuem métodos com o mesmo nome mas que tem internamente resultados diferentes, neste caso fica melhor instanciá-los desta forma, pois através do nome podemos diferenciá-los:

Exemplo 3

Press enter or click to view image in full size
instanciando no program.cs a injeção de dependência usando keyed services

Nomes em constantes literais

criando uma classe com constantes para nomear os serviços

Com uso de Controller

Press enter or click to view image in full size
consumindo a injeção de dependência com keyed services em um controller

Gostou do artigo? clique no ícone👏e me siga para ver as próximas publicações !! Quer ver mais conteúdos, acesse minhas redes através do Linktree: https://linktree.com/nizzola

--

--

Marcio Nizzola
Marcio Nizzola

Written by Marcio Nizzola

Microsoft MVP | Master Software Architect na CI&T | Prof. da Etec Itu | Membro Fundador da Comunidade Itu Developers.

No responses yet