【NetCore】03-依赖注入

这篇具有很好参考价值的文章主要介绍了【NetCore】03-依赖注入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

依赖注入框架

1.为什么要是使用依赖注入框架

  • 管理类之间的依赖,帮助我们在构建应用时遵循设计原则,确保代码的可维护性和可扩展性
  • 依赖注入框架提供了对象创建和生命周期管理的核心能力,各个组件相互协作,也是由依赖注入框架的能力来实现的

组件包

  • Microsoft.Extensions.DependencyInjection.Abstractions
  • Microsoft.Extensions.DependencyInjection

依赖注入框架核心类型
1.IServiceCollection --> 负责服务注册
2.ServiceDescription --> 每个服务注册时的信息
3.IServiceProvider --> 容器
4.IServiceScope --> 子容器生命周期

1.1 生命周期(ServiceLifeTime)

  • 单例 Singleton --> 在根容器生命周期内都是单例
  • 作用于 Scoped --> 在子容器的生存周期内使用的是同一对象,如果容器被释放,则对象也被释放
  • 瞬时(暂时) Transient --> 每一次从容器中获取对象时,都能获取到一个全新的对象

1.2 服务注册方式

1.servcies.AddScope<接口类型,实现>();

2.services.AddScope<接口类型>(new Tdata()); ⇒ 花式注册

3.services.AddScope<接口类型>(serviceProvider=>{return new 实现()}); ⇒ 工厂模式

4.services.TryAddSingleton<接口类型,实现>(); ⇒ 尝试注册,已经注册过的就不会再注册了,服务类型是接口类型,如果已经存在相同接口类型,则不注册

5.services.TryAddEnumerable(ServiceDescriptor.Singleton<接口类型,实现>()); ⇒ 相同类型的服务接口,如果实现是不同的,则可以注册,如果实现类是相同的就不注册

1.3 服务移除、替换

  • 移除:services.RemoveAll<接口类型>(); ⇒ 移除所有的当前注册接口类型的服务
  • 替换: services.Replace(ServiceDescriptor.Singleton<接口类型,实现>);

1.4 注册泛型模板

  • services.AddSingleton(typeof(IGenericService<>),typeof(GenericService<>))
// 泛型类的定义

public interface IGenericService<T>
{
}

public class GenericService<T>:IGenericService<T>
{
	public T Data  {get; private set;}
	public GenericService(T data)
	{
		this.Data = data;
	}
}

服务注册时,如果是大部分接口都需要使用时,采用构造函数注入的方式,
如果仅个别方法使用,采用[FromServices]方式注入
文章来源地址https://www.toymoban.com/news/detail-605502.html

到了这里,关于【NetCore】03-依赖注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于.NetCore开发博客项目 StarBlog - (28) 开发友情链接相关接口

    之前介绍的友情链接功能,只实现了友情链接的展示和管理接口。 还缺失友情链接申请、审核管理、通知,现在把这块功能补全。 Model 什么的之前那篇文章都有,本文直接补全逻辑代码~ 详见: 基于.NetCore开发博客项目 StarBlog - (13) 加入友情链接功能 友情链接申请页面 实现一

    2024年02月06日
    浏览(50)
  • 基于.NetCore开发博客项目 StarBlog - (27) 使用JWT保护接口

    这是StarBlog系列在2023年的第二篇更新😂 这几个月都在忙,更新变得很不勤快,但是拖着不更新我的心里更慌,很久没写,要开头就变得很难😑 说回正题,之前的文章里,我们已经把博客关键的接口都开发完成了,但还少了一个最关键的「认证授权」,少了这东西,网站就跟

    2024年02月02日
    浏览(75)
  • 银河麒麟OS C# .netcore桌面应用开发环境搭建笔记

    一、安装.netcore 参考在 Ubuntu 上安装 .NET - .NET | Microsoft Docs。 1、x64平台:可直接用包管理安装。(仅在 x64 体系结构上支持包管理器安装。) 2、arm等其他平台:通过一些其他方式(例如使用 Snap、安装程序脚本或通过手动二进制安装)安装 .NET。 a)手动安装: 先创建并进入

    2024年02月07日
    浏览(45)
  • .Net 6/NetCore3.1 Vue Element Uniapp前后端分离低代码快速开发框架

    这是一个能提高开发效率的开发框架,全自动生成PC与移动端(uniapp)代码;支持移动ios/android/h5/微信小程序。 1、前后端分离项目 2、纯后端项目 3、移动端开发uni-app(IOS、Android、H5、微信小程序) 4、内容管理系统 1、代码生成器 2、一对一与一对多代码生成 3、全自动导入导出

    2024年02月10日
    浏览(41)
  • .NetCore调用Soap接口

    添加服务引用的方式无法满足我请求Soap接口,所以写了个Soap帮助类,使用HttpClient的方式请求接口。 提示:以下是本篇文章正文内容,下面案例可供参考 一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素: 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息 可选的

    2024年02月04日
    浏览(37)
  • 【NetCore】09-中间件

    1.1 中间件工作原理 1.2 中间件核心对象 IApplicationBuilder RequestDelegate IApplicationBuilder可以通过委托方式注册中间件,委托的入参也是委托,这就可以将这些委托注册成一个链,如上图所示;最终会调用Builder方法返回一个委托,这个委托就是把所有的中间件串起来后合并成的一个

    2024年02月12日
    浏览(49)
  • netcore模型配置

    模型配置可以通过Fluent API和注解的方式 FluentAPI步骤 新建Products 和Category类 新建Products类 Products     新建Category类 Category 他们之间存在一对多的关系 配置实体属性 Fluent API  配置一对一的关系 一对一关系表示两个实体存在唯一的关系,每个实体只能关联到另一个实体 新建

    2024年02月16日
    浏览(38)
  • .netcore基础知识(一)

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 先来说说web服务器 先来一张图 一个典型的进程外托管模型 我们先看kestrel这一部分 我们在它前面放了一个方向代理服务器nginx 对http请求做预处理 kestrel本

    2024年02月09日
    浏览(35)
  • 杨中科 .NETCORE NuGet

    Zack.EFCore.Batch 使用这个开发包Entity Framework Core用户可以使用LINQ语句删除或者更新多条数据库记录,操作只执行一条SQL语句并且不需要首先把实体对象加载到内存中。这个开发包支持Entity Framework Core 5.0以及更高版。 操作说明: 第一步 https://www.nuget.org 精准搜索 合适与不知道什

    2024年01月20日
    浏览(39)
  • .netcore发布独立版部署

    .NetCore 在发布独立版时会打包独立环境,就算服务没有安装环境也能运行,这就是.NetCore跨平台的特性之一。 按照微软的传统配套,c#开发的项目一般都是发布打包程序部署在iis,但是.netcore 跨平台的,就是说当发布独立版时可以跨平台部署。 在发布独立版是,会把项目中的

    2024年02月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包