2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
définition : L'inversion du contrôle est un principe de conception qui inverse le flux de contrôle dans la programmation traditionnelle. Dans les modèles de programmation traditionnels, les dépendances entre les composants sont créées et maintenues en interne par les composants eux-mêmes. En mode inversion de contrôle, cette dépendance est gérée par un conteneur externe (comme le framework Spring, Microsoft.Extensions.DependencyInjection en .NET, etc.). Le composant n'est plus responsable de ses propres dépendances, mais injecte toutes les dépendances. via le conteneur externe requis.
idée principale: Déplace la création d'objets et la gestion des dépendances entre eux des objets eux-mêmes vers des conteneurs externes.
avantage:
définition : L'injection de dépendances est un moyen spécifique de réaliser une inversion de contrôle. Cela implique de transmettre des dépendances (services ou objets) dans des classes au lieu de laisser les classes les créer elles-mêmes.
Méthode pour réaliser:
définition Le conteneur :IOC est un framework pour gérer le cycle de vie et les dépendances des objets. Il crée automatiquement des objets basés sur la configuration (tels que des fichiers XML, des annotations ou une configuration de code) et injecte des dépendances dans ces objets.
effet:
En C#, vous pouvez utiliser une variété de conteneurs IOC pour gérer les dépendances, tels que Microsoft.Extensions.DependencyInjection (le conteneur DI intégré de .NET Core et versions ultérieures), Autofac, etc. Ce qui suit prend Microsoft.Extensions.DependencyInjection comme exemple pour présenter comment utiliser les conteneurs IOC pour gérer les dépendances dans les projets C#.
Les services sont généralement utilisés dans les applications .NETProgram.cs
ouStartup.cs
(pour les projets ASP.NET Core) utilisé dansIServiceCollection
interface pour vous inscrire.
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IMyService, MyService>(); // 将MyService注册为单例服务
// 其他服务注册
}
Injectez des dépendances dans le contrôleur, le service ou toute autre classe via le constructeur.
public class MyController : Controller
{
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
// ... 控制器的其他代码
}
Dans l'exemple ci-dessus,MyController
La classe est injectée via le constructeurIMyService
La mise en œuvre de l'interface (c'est-à-direMyService
gentil).De cette façon, quandMyController
Une fois créé, le conteneur IOC sera automatiquementIMyService
L'implémentation est injectée dans le constructeur.