analisar manualmente asp.net Service Core em ConfigureServices
O método
no asp.net Core usado para configurar os contêineres de injeção de dependência não fornece um método para analisar diretamente os serviços. Para analisar manualmente o serviço deste método, é necessário um método alternativo.
Modo do provedor de serviços
Para analisar os serviços, asp.net Core usa o padrão do provedor de serviços. Após a construção da coleção de serviços, ela é convertida em uma instância iserviceProvider , permitindo que o serviço seja analisado.
provedor de serviços de injeção ] Uma maneira de analisar um serviço é injetar a instância
iserviceProvider no construtor da classe startup
. No entanto, essa abordagem fornece apenas acesso aos serviços limitados necessários injetados pela camada de hospedagem.
] No método
configure, o iapplicationBuilder
fornece a propriedade ApplicationServices
, que contém um provedor de serviços que pode acessar todos os serviços registrados.
public void Configure(IApplicationBuilder app)
{
var serviceProvider = app.ApplicationServices;
var fooService = serviceProvider.GetService();
}
construir provedor de serviços intermediários ] Para analisar um serviço no método
ConfigureServices, você pode criar um provedor de serviços intermediário a partir de uma coleção parcialmente construída de serviços. No entanto, isso inclui apenas serviços registrados antes disso.
•
{
Serviços.addsingleton
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton();
var sp = services.BuildServiceProvider();
var fooService = sp.GetService();
}
]
Os serviços de análise manual geralmente não são recomendados porque viola o princípio da injeção de dependência. Em vez disso, use injeção ou utilize a injeção do provedor de serviços no método configure .
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3