在 .NET Core Class 库(.NET 标准)中使用依赖注入

Using Dependency Injection with .NET Core Class Library (.NET Standard)

我已经完成了 link:

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

并了解了如何为 Web 使用依赖注入 API。

如上文所述link 我可以使用 Startup (Startup.cs) class 在 API 层内进行依赖注入。但是如何为.NET Core Class 库实现依赖注入。下面是我如何添加 class 库的屏幕截图。

我的项目结构是

在项目“DataManagement.Repository”中,我写了一个class“UserRepository”,在项目“DataManagement.Repository.Interfaces”中写了一个接口“IUserRepository”。

在“DataManagement.Business”项目中我写了一个class“UserManager”

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

如你所见,我正在尝试通过构造函数实现依赖注入。

但我不确定需要进行哪些更改才能在 .NET Core Class 库(.NET 标准)中启用依赖项注入。

您无需在 class 图书馆中进行任何操作。只有主应用程序具有 composition root(您可以在应用程序生命周期的最早时间点设置对象图)。

这发生在您的 ASP.NET 核心应用程序的 Startup.cs 中。您还可以在那里注册您的依赖项:

services.AddScoped<IUserManager,UserManager>();

就是这样。 Class 库没有合成根。它们也不应该,因为没有应用程序就不能使用它们,并且所使用的 IoC 容器是应用程序而不是库的选择。

然而,您可以提供方便的方法来进行此注册,例如 ASP.NET Core 或某种模块系统中常见的 AddXxx 方法,例如 Autofac 或 Castle Windsor 等第 3 方 IoC 容器.