Como configurar a injeção de dependência em System.CommandLine
Artigo
Importante
System.CommandLine está atualmente em PREVIEW, e esta documentação é para a versão 2.0 beta 4.
Algumas informações estão relacionadas ao produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Use um fichário personalizado para injetar tipos personalizados em um manipulador de comandos.
Recomendamos a injeção de dependência específica do manipulador (DI) pelos seguintes motivos:
Os aplicativos de linha de comando geralmente são processos de curta duração, nos quais o custo de inicialização pode ter um impacto notável no desempenho. A otimização do desempenho é particularmente importante quando os preenchimentos de guias precisam ser calculados. Os aplicativos de linha de comando são diferentes dos aplicativos Web e GUI, que tendem a ser processos relativamente longos. O tempo de inicialização desnecessário não é apropriado para processos de curta duração.
Quando um aplicativo de linha de comando com vários subcomandos é executado, apenas um desses subcomandos será executado. Se um aplicativo configura dependências para os subcomandos que não são executados, ele degrada desnecessariamente o desempenho.
Para configurar DI, crie uma classe que derive de BinderBase<T> onde T é a interface para a qual você deseja injetar uma instância. Na substituição de GetBoundValue método, obtenha e retorne a instância que você deseja injetar. O exemplo a seguir injeta a implementação do registrador padrão para ILogger:
A origem deste conteúdo pode ser encontrada no GitHub, onde também pode criar e rever problemas e pedidos Pull. Para mais informações, consulte o nosso guia do contribuidor.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Entenda e implemente a injeção de dependência em um aplicativo ASP.NET Core. Use o contêiner de serviço interno do ASP.NET Core para gerenciar dependências. Registre serviços com o contêiner de serviço.