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

可以做相册的网站职业培训网络平台

可以做相册的网站,职业培训网络平台,建设图书馆网站的意义,东莞市网站建设分站企业提到依赖不得不提到,控制反转(Inversion of Control,IOC)这个概念,简单的来讲就是将控制对象的权限交给框架,不再手动完成。IOC实现方式有2种: 1、服务定位器(ServiceLocator),主动…

提到依赖不得不提到,控制反转(Inversion of Control,IOC)这个概念,简单的来讲就是将控制对象的权限交给框架,不再手动完成。IOC实现方式有2种:

1、服务定位器(ServiceLocator),主动获取对象

2、依赖注入(Dependency Injection,DI),在使用的地方申明对象,由框架自动赋值。

DI好处:简化模块的组装过程,降低模块之间的耦合度。

---------------------------------------------------------------------------------------------------------------------------------DI常见概念:

1、服务(Service):对象;

2、注册服务;

3、服务容器:负责管理注册的服务

4、查询服务:创建对象及关联对象

---------------------------------------------------------------------------------------------------------------------------------根据类型获取和注册服务,需要分别指定服务类型(service type)和实现类型(implementation type),服务类型推荐用接口(可以是接口、类),实现类型只能用类。

.Net 控制反转组件取名为:DependecyInjection,也包含ServiceLocator功能

public inteface iTest{

}

public class Test:iTest{

}

---------------------------------------------------------------------------------------------------------------------------------【怎么使用】

1、Nuget 安装 Microsoft.Extensions.DependencyInjection

2、using Microsoft.Extensions.DependencyInjection

ServiceCollection services = new ServiceCollection();//定义一个承放服务的集合services.AddTransient<GetRole>();//添加一个瞬态的服务
using (ServiceProvider serviceProvider = services.BuildServiceProvider())
{//ServiceProvider 相当于服务定位器GetRole service = serviceProvider.GetService<GetRole>();service.Name = "test";service.GetName();}

---------------------------------------------------------------------------------------------------------------------------------

对象生命周期:Transient(瞬态);Scoped(范围)、Singleton(单例)

1、Transient,添加一个瞬态的服务, 每次申明服务时,会创建新的对象。

ServiceCollection services = new ServiceCollection();//定义一个承放服务的集合
services.AddTransient<GetRole>();//添加一个瞬态的服务 每次申明服务时,会创建新的对象using (ServiceProvider serviceProvider = services.BuildServiceProvider())
{   GetRole service = serviceProvider.GetService<GetRole>();service.Name = "test";service.GetName();GetRole service1 = serviceProvider.GetService<GetRole>();service1.Name = "test2";service1.GetName();//结果:service!=service1
}

2、Singleton,添加一个单例的服务 每次申明服务时,会指向同一对象。

3、Scope,添加一个范围的服务  范围内的申明的服务,会指向同一对象

注:如果申明的Singleton,在Scope范围申明的服务视为Singleton的情况。

ServiceCollection services = new ServiceCollection();//定义一个承放服务的集合services.AddScoped<GetRole>();using (ServiceProvider serviceProvider = services.BuildServiceProvider())
{   //Scope用法using (IServiceScope scope1 = serviceProvider.CreateScope()) {GetRole service     = scope1.ServiceProvider.GetService<GetRole>();service.Name = "test";service.GetName();GetRole service2 = scope1.ServiceProvider.GetService<GetRole>();service1.Name = "test";service1.GetName();//范围内service=service2}using (IServiceScope scope2 = serviceProvider.CreateScope()) {GetRole service3 = scope2.ServiceProvider.GetService<GetRole>();service.Name = "test";service.GetName();GetRole service4 = scope2.ServiceProvider.GetService<GetRole>();service1.Name = "test";service1.GetName();}//范围外service2!=service3

其他知识点:Dispose 释放资源

如果服务继承了IDisposable接口,在离开Scope范围时,会自动调用类的Dispose方法释放资源。

http://www.yayakq.cn/news/456412/

相关文章:

  • 廊坊网站排名方案绍兴大公司有哪些
  • 建设网站相关法律条文文创产品设计书籍
  • 校园网站建设管理办法洛阳网站建设seo
  • 中卫网站设计公司苏州市建设局安监站网站
  • 北京市建设工程造价管理处 网站经典重庆论坛上不了了
  • 包装建设网站网上做广告宣传
  • 唐山哪家网站好网页设计代码免费
  • 建设通网站是做什么的怎么制作游戏需要什么软件
  • 通信公司网站建设企业网站建设国内外现状
  • 手机网站的建设个人网站可以名字写官网吗
  • 海口市住房和城乡建设局 网站最美logo图案大全
  • 淘宝网站推广策划方案天助网站
  • 快速搭建网站视频教程南阳设计公司排名
  • 阜阳网站建设哪家好平面设计logo创意图片
  • 天津制作网站的公司电话个人网站建设目的
  • 高清免费爱做网站教学资源库网站建设立项申报书
  • 每天干每天做网站wordpress用lnmp还是lamp
  • 如何分析网站流量当面付 wordpress
  • 惠州网站建设欧力虎文山州建设局网站
  • 网站开发集人力资源网站模板
  • 太平洋建设网站重庆网站建设 吧
  • 阿里巴巴有没有帮做网站的公司黄页推广网站
  • 个人网站有什么html模板网站模板下载
  • 网站天天做收录有效果吗免费主题网站
  • 资源网站优化排名网站网站服务费网络建设会计分录
  • 安阳网站推广公司郑州企业网站seo
  • 交友类网站功能建设思路西安cms建站模板
  • 六安电商网站建设价格做网站有什么平台
  • 网站开发众包平台我的小程序在哪里找
  • 网站维护 英文高校思政专题网站建设