web-dev-qa-db-fra.com

Utilisation de l'injection de dépendances avec la bibliothèque de classes .NET Core (.NET Standard)

J'ai parcouru le lien:

https://docs.Microsoft.com/en-us/aspnet/core/mvc/controllers/dependency-injection

et j'ai appris comment utiliser l'injection de dépendances pour l'API Web.

Comme mentionné dans le lien ci-dessus, je peux utiliser la classe Startup (Startup.cs) pour l'injection de dépendances à l'intérieur de la couche API. Mais comment réaliser l'injection de dépendances pour la bibliothèque de classes .NET Core. Ci-dessous, la capture d'écran de l'ajout d'une bibliothèque de classes. enter image description here

Et ma structure de projet est

enter image description here

Dans le projet "DataManagement.Repository", j'ai écrit une classe "UserRepository" et dans le projet "DataManagement.Repository.Interfaces", j'ai écrit une interface "IUserRepository".

Dans le projet "DataManagement.Business", j'ai écrit une classe "UserManager"

class UserManager
    {
        private IUserManager _userManager;
        public UserManager(IUserManager userManager)
        {
            _userManager = userManager;
        }
    }

Comme vous pouvez le voir, j'essaie de réaliser l'injection de dépendances via le constructeur.

Mais je ne suis pas sûr que les changements doivent être effectués pour activer l'injection de dépendances dans la bibliothèque de classes .NET Core (.NET Standard).

19

Vous n'avez rien à faire dans votre bibliothèque de classe. Seule l'application principale a un racine de composition (le premier point dans le cycle de vie d'une application, vous pouvez configurer votre graphique d'objet).

Cela se produit dans Startup.cs dans votre application ASP.NET Core. Là, vous enregistrez également vos dépendances:

services.AddScoped<IUserManager,UserManager>();

C'est ça. Les bibliothèques de classes n'ont pas de racine de composition. Ils ne le devraient pas non plus, car vous ne pouvez pas les utiliser sans application et le conteneur IoC utilisé est un choix de l'application et non de la bibliothèque.

Vous pouvez cependant fournir des méthodes pratiques pour effectuer ces enregistrements, comme la méthode AddXxx courante dans ASP.NET Core ou une sorte de système de modules, comme dans les conteneurs IoC tiers comme Autofac ou Castle Windsor.

23
Tseng