minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
definição : A inversão de controle é um princípio de design que inverte o fluxo de controle na programação tradicional. Nos modelos de programação tradicionais, as dependências entre componentes são criadas e mantidas internamente pelos próprios componentes. No modo de inversão de controle, essa dependência é gerenciada por um contêiner externo (como o framework Spring, Microsoft.Extensions.DependencyInjection em .NET, etc. O componente não é mais responsável por suas próprias dependências, mas injeta todas as dependências). por meio do contêiner externo.
idéia principal: Move a criação de objetos e o gerenciamento de dependências entre eles dos próprios objetos para contêineres externos.
vantagem:
definição : A injeção de dependência é uma forma específica de obter inversão de controle. Envolve passar dependências (serviços ou objetos) para classes, em vez de permitir que as próprias classes as criem.
Método para perceber:
definição :IOC container é uma estrutura para gerenciar o ciclo de vida e dependências de objetos. Ele cria automaticamente objetos com base na configuração (como arquivos XML, anotações ou configuração de código) e injeta dependências nesses objetos.
efeito:
Em C#, você pode usar uma variedade de contêineres IOC para gerenciar dependências, como Microsoft.Extensions.DependencyInjection (o contêiner DI integrado do .NET Core e versões posteriores), Autofac, etc. A seguir, Microsoft.Extensions.DependencyInjection é um exemplo para apresentar como usar contêineres IOC para gerenciar dependências em projetos C#.
Os serviços são normalmente usados em aplicativos .NETProgram.cs
ouStartup.cs
(para projetos ASP.NET Core) usado emIServiceCollection
interface para registrar.
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IMyService, MyService>(); // 将MyService注册为单例服务
// 其他服务注册
}
Injete dependências no controlador, serviço ou qualquer outra classe através do construtor.
public class MyController : Controller
{
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
// ... 控制器的其他代码
}
No exemplo acima,MyController
A classe é injetada através do construtorIMyService
A implementação da interface (ou seja,MyService
tipo).Desta forma, quandoMyController
Quando criado, o contêiner IOC será automaticamenteIMyService
A implementação é injetada no construtor.