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

ASP.NET Core IOC容器

            //IOC容器支持依赖注入{ServiceCollection serviceDescriptors = new ServiceCollection();serviceDescriptors.AddTransient<IMicrophone, Microphone>();serviceDescriptors.AddTransient<IPower, Power>();serviceDescriptors.AddTransient<IHeadphone, Headphone>();ServiceProvider serviceProvider =serviceDescriptors.BuildServiceProvider();IHeadphone headphone = serviceProvider.GetService<IHeadphone>();}

 

AddTransient:瞬时生命周期,每一次创建都是是一个全新的实例
ServiceCollection serviceDescriptors = new ServiceCollection();
serviceDescriptors.AddTransient<IMicrophone, Microphone>();
ServiceProvider serviceProvider =serviceDescriptors.BuildServiceProvider();
IMicrophone microphone1 = serviceProvider.GetService<IMicrophone>();
AddSingleton:单例生命周期:同一个类型,创建出来的是同一个实例
ServiceCollection serviceDescriptors = new ServiceCollection();
serviceDescriptors.AddSingleton<IMicrophone, Microphone>();
ServiceProvider serviceProvider = serviceDescriptors.BuildServiceProvider();
IMicrophone microphone1 = serviceProvider.GetService<IMicrophone>();
AddScoped:作用域生命周期: 同一个serviceProvider获取到的是同一个实例
ServiceCollection serviceDescriptors = new ServiceCollection();
serviceDescriptors.AddScoped<IMicrophone, Microphone>();
ServiceProvider serviceProvider1 = serviceDescriptors.BuildServiceProvider();
IMicrophone microphone1 = serviceProvider1.GetService<IMicrophone>();

ServiceCollection 抽象和具体之间多种注册方式

{ServiceCollection serviceDescriptors = new ServiceCollection();serviceDescriptors.AddTransient<IMicrophone, Microphone>();ServiceProvider serviceProvider1 = serviceDescriptors.BuildServiceProvider();IMicrophone microphone1 = serviceProvider1.GetService<IMicrophone>();
}
{ServiceCollection serviceDescriptors = new ServiceCollection();serviceDescriptors.AddTransient(typeof(IMicrophone), typeof(Microphone));ServiceProvider serviceProvider1 = serviceDescriptors.BuildServiceProvider();IMicrophone microphone1 = serviceProvider1.GetService<IMicrophone>();
}
//注册抽象和一段业务逻辑
{ServiceCollection serviceDescriptors = new ServiceCollection();serviceDescriptors.AddTransient(typeof(IPower), provider =>{//在这里可以我们自己来决定如何创建这个对象的实例;可以对创建出来的这个实例,可以做加工IMicrophone microphone = provider.GetService<IMicrophone>();return new Power(microphone);});serviceDescriptors.AddTransient(typeof(IMicrophone), typeof(Microphone));ServiceProvider serviceProvider1 = serviceDescriptors.BuildServiceProvider();IPower power = serviceProvider1.GetService<IPower>();
}
{ServiceCollection serviceDescriptors = new ServiceCollection();serviceDescriptors.AddTransient(typeof(Microphone));ServiceProvider serviceProvider1 = serviceDescriptors.BuildServiceProvider();Microphone microphone1 = serviceProvider1.GetService<Microphone>();
}{ServiceCollection serviceDescriptors = new ServiceCollection();serviceDescriptors.AddTransient<Microphone>();ServiceProvider serviceProvider1 = serviceDescriptors.BuildServiceProvider();Microphone microphone1 = serviceProvider1.GetService<Microphone>();
} 

相关文章:

ASP.NET Core IOC容器

//IOC容器支持依赖注入{ServiceCollection serviceDescriptors new ServiceCollection();serviceDescriptors.AddTransient<IMicrophone, Microphone>();serviceDescriptors.AddTransient<IPower, Power>();serviceDescriptors.AddTransient<IHeadphone, Headp…...

入门力扣自学笔记277 C++ (题目编号:42)(动态规划)

42. 接雨水 题目&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组…...

SwiftUI实现iPad多任务分屏

1. 概述 iPadOS引入了多任务分屏功能&#xff0c;使用户能够同时在一个屏幕上使用多个应用程序。这为用户提供了更高效的工作环境&#xff0c;可以在同一时间处理多个任务。 iPad多任务分屏有两种常见的模式&#xff1a;1/2分屏和Slide Over&#xff08;滑动覆盖&#xff09;…...

maven依赖,继承

依赖的范围 compile引入的依赖 对main目录下的代码有没有效&#xff0c;main目录下的代码能不能用compile引入的依赖中的类等 以test引入的依赖&#xff0c;在main中是否可以使用 provided&#xff08;已提供&#xff09;&#xff0c;有了就不要带到服务器上&#xff0c;打包…...

仿`gRPC`功能实现像调用本地方法一样调用其他服务器方法

文章目录 仿gRPC功能实现像调用本地方法一样调用其他服务器方法 简介单体架构微服务架构RPCgPRC gRPC交互逻辑服务端逻辑客户端逻辑示例图 原生实现仿gRPC框架编写客户端方法编写服务端方法综合演示 仿 gRPC功能实现像调用本地方法一样调用其他服务器方法 简介 在介绍gRPC简介…...

分布式环境下的数据同步

一般而言elasticsearch负责搜索&#xff08;查询&#xff09;&#xff0c;而sql数据负责记录&#xff08;增删改&#xff09;&#xff0c;elasticsearch中的数据来自于sql数据库&#xff0c;因此sql数据发生改变时&#xff0c;elasticsearch也必须跟着改变&#xff0c;这个就是…...

无涯教程-Flutter - 数据库

SQLite" class"css-1occaib">SQLite数据库是基于事实和标准SQL的嵌入式数据库引擎&#xff0c;它是小型且经过时间考验的数据库引擎&#xff0c;sqflite软件包提供了许多函数&#xff0c;可以有效地与SQLite数据库一起使用&#xff0c;它提供了操作SQLite数据…...

算法笔记:平衡二叉树

1 介绍 平衡二叉树&#xff08;AVL树&#xff09;是一种特殊的二叉搜索树&#xff08;BST&#xff09;&#xff0c;它自动确保树保持低高度&#xff0c;以便实现各种基本操作&#xff08;如添加、删除和查找&#xff09;的高效性能。 ——>时间都维持在了O(logN)它是一棵空…...

redis 通用命令

目录 通用命令是什么 SET & GET keys EXISTS DEL EXPIRE TTL redis 的过期策略 定时器策略 基于优先级队列定时器 基于时间轮的定时器 TYPE 通过 redis 客户端和 redis 服务器交互。 所以需要使用 redis 的命令&#xff0c;但是 redis 的命令非常多。 通用命令…...

Pycharm配置及使用Git教程

文章目录 1. 安装PyCharm2. 安装Git3. 在PyCharm中配置Git插件4. 连接远程Gtilab仓库5. Clone项目代码6. 将本地文件提交到远程仓库6.1 git add6.2 git commit6.3 git push6.4 git pull 平时习惯在windows下开发&#xff0c;但是我们又需要实时将远方仓库的代码clone到本地&…...

CSS transition 过渡

1 前言 水平居中、垂直居中是前端面试百问不厌的问题。 其实现方案也是多种多样&#xff0c;常叫人头昏眼花。 水平方向可以认为是内联方向&#xff0c;垂直方向认为是块级方向。 下面介绍一些常见的方法。 2 内联元素的水平垂直居中 首先&#xff0c;常见内联元素有&…...

Unity中Shader的UV扭曲效果的实现

文章目录 前言一、实现的思路1、在属性面板暴露一个 扭曲贴图的属性2、在片元结构体中&#xff0c;新增一个float2类型的变量&#xff0c;用于独立存储将用于扭曲的纹理的信息3、在顶点着色器中&#xff0c;根据需要使用TRANSFORM_TEX对Tilling 和 Offset 插值&#xff1b;以及…...

Automotive 添加一个特权APP

Automotive 添加一个特权APP platform: android-13.0.0_r32 一. 添加一个自定义空调的app为例 路径&#xff1a;packages/apps/Car/MyHvac app内容可以自己定义&#xff0c;目录结构如下&#xff1a; 1.1 Android.bp package {default_applicable_licenses: ["Andr…...

自定义TimeLine

自定义TimeLine 什么是TimeLineData&#xff08;数据&#xff09;Clip&#xff08;片段&#xff09;Track&#xff08;轨道&#xff09;Mixer&#xff08;混合&#xff09; 什么是TimeLine 在 Unity 中&#xff0c;TimeLine&#xff08;时间轴&#xff09;是一种用于创建和管理…...

如何使用SQL系列 之 如何在SQL中使用WHERE条件语句

引言 在结构化查询语言 (SQL)语句中&#xff0c;WHERE子句限制了给定操作会影响哪些行。它们通过定义特定的条件(称为搜索条件)来实现这一点&#xff0c;每一行都必须满足这些条件才能受到操作的影响。 本指南将介绍WHERE子句中使用的通用语法。它还将概述如何在单个WHERE子句…...

leetcode:1941. 检查是否所有字符出现次数相同(python3解法)

难度&#xff1a;简单 给你一个字符串 s &#xff0c;如果 s 是一个 好 字符串&#xff0c;请你返回 true &#xff0c;否则请返回 false 。 如果 s 中出现过的 所有 字符的出现次数 相同 &#xff0c;那么我们称字符串 s 是 好 字符串。 示例 1&#xff1a; 输入&#xff1a;s…...

Echarts 各种点击事件监听

目录 一、鼠标事件1.1、左击1.2、双击1.3、右击1.4、右键双击1.5、中轴滚动二、时间轴2.1、时间轴监听三、拖动3.1、拖动事件一、鼠标事件 1.1、左击 chart.on(click, function(params)...

《智能网联汽车自动驾驶功能测试规程》

一、 编制背景 2018 年4 月12 日&#xff0c;工业和信息化部、公安部、交通运输部联合发布《智能网联汽车道路测试管理规范(试行)》&#xff08;以下简称《管理规范》&#xff09;&#xff0c;对智能网联汽车道路测试申请、审核、管理以及测试主体、测试驾驶人和测试车辆要求等…...

NVIDIA CUDA Win10安装步骤

前言 windows10 版本安装 CUDA &#xff0c;首先需要下载两个安装包 CUDA toolkit&#xff08;toolkit就是指工具包&#xff09;cuDNN 1. 安装前准备 在安装CUDA之前&#xff0c;需要完成以下准备工作&#xff1a; 确认你的显卡已经正确安装&#xff0c;在设备管理器中可以看…...

Elasticsearch、Kibana以及Java操作ES 的快速使用

docker 安装elastic search 、 kibana&#xff08;可视化管理elastic search&#xff09; docker pull elasticsearch:7.12.1 docker pull kibana:7.12.1创建docker自定义网络 docker自定义网络可以使得容器之间使用容器名网络互连&#xff0c;默认的网络不会有这功能。 一定…...

逐鹿人形机器人,百度、腾讯、小米卷起来

长期不温不火的人形机器人产业迎来新风口&#xff0c;技术显著提升、新品层出不穷、资本投资态度也逐渐好转。 8月18日&#xff0c;2023世界机器人大会博览会正式开放&#xff0c;全面展示了机器人行业的新技术、新产品和新应用。据悉&#xff0c;此次展会展览总面积达4.5万平…...

AndroidStudio推荐下载和配置

1、推荐下载链接 Download Android Studio & App Tools - Android Developers 2、gradle配置案例 // Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {maven { url https://maven.aliyun.…...

mysql异常占用资源排查

通过执行日志与连接信息排查 查看是否开启日志记录 mysql> show global variables like %general%; --------------------------------- | Variable_name | Value | --------------------------------- | general_log | OFF | | general_log_file…...

requests 库:发送 form-data 格式的 http 请求 (python)

安装 requests-toolbelt !pip install requests-toolbeltdemo from requests_toolbelt import MultipartEncoder import requestsm MultipartEncoder(fields{query: """第一&#xff0c;向量化匹配是有能力上限的。搜索引擎实现语义搜索已经是好几年的事情了…...

行测图形推理规律(一)元素组成

题库&#xff1a;粉笔网题库 (fenbi.com) 不知道和测评的行测题库是不是一样的&#xff0c;但是总结的规律应该是一样的。 规律并不唯一&#xff0c;题库的答案也只是参考答案&#xff0c;切勿当杠精&#xff0c;你觉得你的规律更合适就别管。本人所归纳的规律仅代表本人想法…...

【python爬虫】13.吃什么不会胖(爬虫实操练习)

文章目录 前言项目实操明确目标分析过程代码实现 前言 吃什么不会胖——这是我前段时间在健身时比较关注的话题。 相信很多人&#xff0c;哪怕不健身&#xff0c;也会和我一样注重饮食的健康&#xff0c;在乎自己每天摄入的食物热量。 不过&#xff0c;生活中应该很少有人会…...

深入理解联邦学习——联邦学习与现有理论的区别与联系

分类目录&#xff1a;《深入理解联邦学习》总目录 作为一种全新的技术&#xff0c;联邦学习在借鉴一些成熟技术的同时也具备了一定的独创性。下面我们就从多个角度来阐释联邦学习和其他相关概念之间的关系。 联邦学习与差分隐私理论的区别 联邦学习的特点使其可以被用来保护用…...

基于Python+DenseNet121算法模型实现一个图像分类识别系统案例

目录 介绍在TensorFlow中的应用实战案例最后 一、介绍 DenseNet&#xff08;Densely Connected Convolutional Networks&#xff09;是一种卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;2017年由Gao Huang等人提出。该网络的核心思想是密集连接&#xff0c;即每…...

旋转图片两种方法

这两种方法在旋转图像时&#xff0c;可能会产生一些不同的效果&#xff1a; rotate_image_new()旋转后的图像完全包含旋转前的内容&#xff0c;并且填充边界尽可能小 rotate_image() 保持原始图像的大小&#xff0c;并根据填充选项决定是否填充边界为白色。如果 if_fill_whit…...

10 mysql tiny/small/medium/big int 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 int 类类型的相关数据的存储 …...

如何快速推广一个网站/seo优化服务是什么意思

电工之家&#xff1a;www.dgzj.com QQ群&#xff1a;2179090关注电工之家官方微信公众号“电工之家”&#xff0c;收获更多经验知识灯带电压不足是因为导线的压降过大&#xff0c;因为导线的材料、线径一定时&#xff0c;导线的长度越长&#xff0c;导线的电阻就越大&#xf…...

江门网站制作华企立方/徐州seo

有一次在书店里买了一本书&#xff0c;这本书的名字叫做《新人性》&#xff0c;在这本书里&#xff0c;有作者自称价值50个亿的10句话&#xff0c;据作者介绍&#xff0c;这10句话是对来自3000多本励志书籍和3000多个成功学培训网站中大量激励警句的再提炼。我读了之后&#xf…...

杨凌住房和城乡建设局网站/网络推广是什么

logback日志深入使用在之前的博文中&#xff0c;博主已经简单的介绍了logback的配置文件以及简单的使用。下面&#xff0c;博主将介绍一下logback的一些其它用法。格式化输出logback的方法可以支持我们进行格式化输出&#xff0c;我们再也不用手动进行字符串的拼接了。logger.i…...

wordpress谷歌云/怎么自己做一个网站

华为一面&#xff1a;1、图的表示方式&#xff1f;(1)邻接表法&#xff1a;邻接表的核心思想就是针对每个顶点设置一个邻居表。以上面的图为例&#xff0c;这是一个有向图&#xff0c;分别有顶点a, b, c, d, e, f, g, h共8个顶点。使用邻接表就是针对这8个顶点分别构建邻居表&a…...

班级网页模板html源码/seo的搜索排名影响因素有哪些

Android系统的壁纸是其核心模块之一&#xff0c;但是一直以来壁纸Android的壁纸又有其一直的BUG。例如使用单屏的图片作为壁纸&#xff0c;在手机重启后&#xff0c;会自动拉伸图片变为随桌面一起滑动的桌面。还有就是在这种情况下使用桌面&#xff0c;壁纸后面会有恼人的黑色&…...

wordpress 分类缩略图/北京seo加盟

项目需求&#xff1a;用uniapp开发微信小程序&#xff0c;直播界面做可拖动弹幕。 一、直播页面&#xff0c;微信小程序的<live-player>组件就是用来搭建直播的。 我的项目需求是从上一个页面点击后直接跳转进对应的直播间&#xff0c;所以这个界面一开始就需要是全屏播…...