当前位置: 首页 > news >正文

Asp.net core 依赖注入 (带案例以及注释理解)

1.很多朋友不知道什么是依赖注入,接下来我用比较通俗易懂的话语 来帮助大家理解

依赖注入(Dependency Injection,简称DI)是一种设计模式,用于减少组件之间的耦合度。它的核心思想是,将组件之间的依赖关系从组件内部抽离出来,通过外部容器来管理这些依赖关系,从而实现组件之间的松耦合。
举个例子,假设我们有一个类A,它依赖于另一个类B。在不使用依赖注入的情况下,我们需要在类A中创建一个实例化对象B,并在类A中直接调用B的方法。但是,如果我们使用依赖注入,我们可以将类B的实例化对象交给外部容器管理,并将它注入到类A中,从而实现解耦。

依赖注入可以提高代码的可维护性、可测试性和可扩展性。它是现代软件开发中非常重要的一个概念。

2. 上面看不懂没关系,接下来我会通过 商品显示案例 进行演示,希望大家都可以自己敲一遍,以便更好的理解依赖注入设计理念

2.1 首先先打开vs编辑器 创建一个.net Core项目文件

在这里插入图片描述

2.2 创建成功后 项目结构如下

在这里插入图片描述

2.3 现在大多数设计模式已经是面向接口编程,所以在Models文件夹下创建一个IProductService接口

在这里插入图片描述

因为只是测试,所以就简单给类定义三个属性就行

在这里插入图片描述

2.4 以上步骤完成后,这时我们再次创建一个类,来实现IProductService这个接口并重写接口里面的所有方法

在这里插入图片描述

2.5 第五步 这是依赖注入最关键的一步,进行依赖关系配置(依赖注入的精髓就在于不需要自己手动的去实例化对象,而是交给容器底层去帮我们实例化)

这里通过Services.AddTransient方法对依赖关系进行配置将IProductService接口和实现它的类ProductService产生关联,其实还可以通过AddSingleton以及AddScoped方法来进行依赖关系配置,但是三者生命周期不同,具体详情可以查看下面的截图报表

在这里插入图片描述

在这里插入图片描述

2.6 接下来我们来到Home控制器 进行依赖注入(依赖注入通常是在类中构造函数中进行)

在这里插入图片描述

2.7 依赖注入成功后就可以使用 Product类中所有定义好的方法,此时_productService属性指向的就是Product类的对象,我们通过_productService属性来调用GetProducts方法来获取所有商品数据并渲染到相应的视图文件

在这里插入图片描述
在这里插入图片描述

2.8 最后展示的结果如下

在这里插入图片描述

http://www.lryc.cn/news/43665.html

相关文章:

  • 【微信小程序】-- uni-app 项目-- 购物车 -- 首页 - 轮播图效果(五十二)
  • GO实现Redis:GO实现Redis集群(5)
  • 高阶数据结构之 B树 B+树 B*树
  • CSS3之动画属性
  • python --Matplotlib详解
  • 手机(Android)刷NetHunter安装指南,无需ssh执行kali命令, NetHunter支持的无线网卡列表!
  • 教育行业ChatGPT的新挑战
  • 内存泄漏 定位方法
  • es-head插件插入查询以及条件查询(五)
  • 安装python教程并解决Python安装完没有Scripts文件夹问题
  • postman的断言、关联、参数化、使用newman生成测试报告
  • 春招大盘点:找工作除了招聘网站还有哪些渠道?
  • eNSP 构建基本WLAN
  • Python是不是被严重高估了?
  • 给你一个购物车模块,你会如何设计测试用例?【测试用例设计】
  • 【wps】【毕业论文】三线表的绘制
  • Spring Cloud Alibaba 多租户saas企业开发架构技术选型和设计方案
  • Unity IL2CPP 游戏分析入门
  • Python的23种设计模式(完整版带源码实例)
  • OAuth2协议
  • LeetCode-115. 不同的子序列
  • kubernetes scheduler 源码解析及自定义资源调度算法实践
  • MySQL插入数据
  • 从GPT-4、文心一言再到Copilot,AIGC卷出新赛道?
  • 1.2 从0开始学Unity游戏开发--运行原理
  • 【微信小程序】如何获得自己当前的定位呢?本文利用逆地址解析、uni-app带你实现
  • 92年程序员发帖晒薪资称自己很迷茫,网友:老弟你可以了
  • 阿里四面,居然栽在一道排序算法上
  • macOS 13.3(22E252)/12.6.4/11.7.5正式版发布
  • MPP数据库简介及架构分析