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

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

我已经通过链接:

https://docs.microsoft.com/zh-cn/aspnet/core/mvc/controllers/dependency-injection

并了解了如何将依赖注入用于Web API。

如上面的链接所述,我可以使用Startup(Startup.cs)类在API层内部进行依赖项注入。但是如何实现.NET Core类库的依赖注入。下面是我添加类库的屏幕截图。
enter image description here

我的项目结构是

enter image description here

在项目" DataManagement.Repository"中,我编写了一个类" UserRepository",在项目" DataManagement.Repository.Interfaces"中,编写了一个接口" IUserRepository"。

在项目" DataManagement.Business"中,我编写了一个类" UserManager"

1
2
3
4
5
6
7
8
class UserManager
    {
        private IUserManager _userManager;
        public UserManager(IUserManager userManager)
        {
            _userManager = userManager;
        }
    }

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

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


您无需在类库中做任何事情。 只有主应用程序才具有合成根(可以在应用程序生命周期中最早设置对象图)。

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

1
services.AddScoped<IUserManager,UserManager>();

而已。 类库没有合成根。 它们都不应该,因为没有应用程序就无法使用它们,并且所使用的IoC容器是应用程序的选择,而不是库的选择。

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