2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Definition : Die Umkehrung der Kontrolle ist ein Entwurfsprinzip, das den Kontrollfluss in der traditionellen Programmierung umkehrt. In herkömmlichen Programmiermodellen werden Abhängigkeiten zwischen Komponenten intern von den Komponenten selbst erstellt und verwaltet. Im Inversion-of-Control-Modus wird diese Abhängigkeit von einem externen Container verwaltet (z. B. dem Spring-Framework, Microsoft.Extensions.DependencyInjection in .NET usw.). Die Komponente ist nicht mehr für ihre eigenen Abhängigkeiten verantwortlich, sondern injiziert alle Abhängigkeiten über den externen Container.
Hauptidee: Verlagert die Erstellung von Objekten und die Verwaltung von Abhängigkeiten zwischen ihnen von den Objekten selbst in externe Container.
Vorteil:
Definition : Abhängigkeitsinjektion ist eine spezielle Methode, um eine Umkehrung der Kontrolle zu erreichen. Dabei geht es darum, Abhängigkeiten (Dienste oder Objekte) an Klassen zu übergeben, anstatt sie von den Klassen selbst erstellen zu lassen.
Methode zur Verwirklichung:
Definition Der :IOC-Container ist ein Framework zur Verwaltung des Objektlebenszyklus und der Abhängigkeiten. Es erstellt automatisch Objekte basierend auf der Konfiguration (z. B. XML-Dateien, Anmerkungen oder Codekonfiguration) und fügt Abhängigkeiten in diese Objekte ein.
Wirkung:
In C# können Sie eine Vielzahl von IOC-Containern zum Verwalten von Abhängigkeiten verwenden, z. B. Microsoft.Extensions.DependencyInjection (der integrierte DI-Container von .NET Core und späteren Versionen), Autofac usw. Im Folgenden wird Microsoft.Extensions.DependencyInjection als Beispiel verwendet, um die Verwendung von IOC-Containern zum Verwalten von Abhängigkeiten in C#-Projekten vorzustellen.
Dienste werden typischerweise in .NET-Anwendungen verwendetProgram.cs
oderStartup.cs
(für ASP.NET Core-Projekte) verwendet inIServiceCollection
Schnittstelle zur Registrierung.
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IMyService, MyService>(); // 将MyService注册为单例服务
// 其他服务注册
}
Fügen Sie über den Konstruktor Abhängigkeiten in Controller, Dienste oder andere Klassen ein.
public class MyController : Controller
{
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
// ... 控制器的其他代码
}
Im obigen BeispielMyController
Die Klasse wird über den Konstruktor eingefügtIMyService
Die Implementierung der Schnittstelle (d. h.MyService
Art).Auf diese Weise, wannMyController
Bei der Erstellung wird der IOC-Container automatisch erstelltIMyService
Die Implementierung wird in den Konstruktor eingefügt.