wake-up-neo.com

Verwenden der Abhängigkeitsinjektion mit der .NET Core-Klassenbibliothek (.NET Standard)

Ich bin durch den Link gegangen:

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

und lernte, wie ich Abhängigkeitsinjektion für Web-API verwenden kann.

Wie im obigen Link erwähnt, kann ich die Klasse Startup (Startup.cs) für die Abhängigkeitsinjektion innerhalb der API-Schicht verwenden. Aber wie kann man eine Abhängigkeitsinjektion für die .NET Core-Klassenbibliothek erreichen? Unten ist der Screenshot, wie ich eine Klassenbibliothek hinzufüge. enter image description here

Und meine Projektstruktur ist

enter image description here

Im Projekt "DataManagement.Repository" habe ich eine Klasse "UserRepository" und im Projekt "DataManagement.Repository.Interfaces" eine Schnittstelle "IUserRepository" geschrieben.

Im Projekt "DataManagement.Business" habe ich eine Klasse "UserManager" geschrieben

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

Wie Sie sehen können, versuche ich, die Abhängigkeitsinjektion über den Konstruktor zu erreichen.

Ich bin mir jedoch nicht sicher, welche Änderungen vorgenommen werden müssen, um die Abhängigkeitsinjektion in der .NET Core-Klassenbibliothek (.NET Standard) zu aktivieren.

19

Sie müssen nichts in Ihrer Klassenbibliothek tun. Nur die Hauptanwendung hat ein Kompositionsstamm (frühester Punkt in einem Anwendungslebenszyklus, an dem Sie Ihr Objektdiagramm einrichten können).

Dies geschieht in Startup.cs in Ihrer ASP.NET Core-Anwendung. Dort tragen Sie auch Ihre Abhängigkeiten ein:

services.AddScoped<IUserManager,UserManager>();

Das ist es. Klassenbibliotheken haben keine Kompositionswurzel. Sie sollten es auch nicht, da Sie sie nicht ohne eine Anwendung verwenden können und der verwendete IoC-Container eine Auswahl der Anwendung und nicht der Bibliothek ist.

Sie können jedoch bequeme Methoden für diese Registrierungen bereitstellen, z. B. die in ASP.NET Core übliche AddXxx -Methode oder eine Art Modulsystem, z. B. in IoC-Containern von Drittanbietern wie Autofac oder Castle Windsor.

23
Tseng