当前位置: 首页 > 知识库问答 >
问题:

将依赖注入与. NET Core类库(. NET标准)一起使用

颛孙正谊
2023-03-14

我已经通过链接:

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

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

我的项目结构是

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

在“DataManagement.Business”项目中,我写了一个类“UserManager”。

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

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

但我不确定是否需要进行哪些更改才能在.NET Core类库(.NET Standard)中启用依赖关系注入。

共有1个答案

宰父单弓
2023-03-14

你不需要在你的类库里做任何事情。只有主应用程序有一个组合根(在应用程序生命周期中您可以设置对象图的最早的点)。

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

services.AddScoped<IUserManager,UserManager>();

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

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

 类似资料:
  • 如何在.NET核心库项目中将一个类注入另一个类?在API项目中的StartUp类ConfigureServices中,我应该在哪里配置DI?

  • 移除标准库依赖 禁用标准库 项目默认是链接 Rust 标准库 std 的,它依赖于操作系统,因此我们需要显式通过 #![no_std] 将其禁用: os/src/main.rs //! # 全局属性 //! - `#![no_std]` //! 禁用标准库 #![no_std] fn main() { println!("Hello, rCore-Tutorial!"); }

  • 有没有一种方法可以轻松地将面向.NETCore2.0的类库转换为.NET标准? 如果我理解正确,如果有人想在针对不同.NET框架(例如.NET Framework,.NET Core,Xamarin等)的项目中最大限度地提高类库的可重用性,那么以.NET Standard为目标的更好主意 - 前提是所有必需的API都可以在将要定位的.NET Standard版本中提供。 这就是我想将类库从. NE

  • 我正在寻找一种优雅的方式,在标准spring服务中定义字段 如果没有龙目,我们的服务如下: 现在,我们的团队只想使用lombok构造函数(这样我们就可以轻松地添加其他服务)。上面的服务现在看起来是这样的: 如何解决这些问题(在源代码注释中提到)? 我在很多项目中都看到了这个“问题”。我上面提到的变体是我看到的唯一解决方案。当增加字段数量时,这两种解决方案都变得更加丑陋。

  • 我已经开始涉足ASP. Net Core,并发现依赖注入是ASP. Net Core框架中的一流公民,它是内置的,可以用于注入各种服务和库。 我想知道他们正在使用哪个依赖注入框架。他们的文档介绍了ASP中的依赖项注入。网芯 ASP。NET Core从一开始就被设计为支持和利用依赖注入。ASP。NET核心应用程序可以通过将内置框架服务注入Startup类中的方法来利用这些服务,应用程序服务也可以配置

  • 我做了一个名为AcessoCliente的单例类 但我需要对我的单例类执行一个名为ValidadorNivelDeAcessoBusiness的类的依赖注入