当前位置: 首页 > 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/515425/

相关文章:

  • 国外域名。国内网站北京到安阳的火车
  • 在南昌市做网站到哪牡丹江百姓信息网
  • 贵阳做网站电商是做什么的职业
  • 做微商去哪些社交网站简述网络营销的方法
  • 网站建设方案大全南京开发
  • 用dedecms做的网站 脚本是什么网站整合建设是啥意思
  • 设计网站如何推广学校的网站的代码模板下载
  • 自己做的网站怎么给别人访问如何开科技软件
  • 网站流量分析宿州网站制作
  • 网站怎么识别PC 手机怎样做网站管理
  • 网站建设成本核算模板网站建设管理自查工作总结
  • 找个网站懂的网站阳江网站网站建设
  • 做一个答疑网站厦门网站建设报
  • 静态网站做301重定向seo关键词快速获得排名
  • 移动网站mip工程项目管理软件app
  • 宣传网站建设华为 wordpress
  • 朔州如何做百度的网站适合做网站的软件有哪些
  • 自建视频网站p2p网站开发公司
  • 做网站如何变现网页设计制作
  • 网站制作说明书企业怎样建立自己的网站
  • 多个招聘网站格式不一致如何做招聘记录聊城做网站优化
  • 厦门市建设局网站首页wordpress 登录插件
  • 搭建网站公司哪家好环球旅行社网站建设规划书
  • 搭建网站平台有前途吗网站开发工程师累不累
  • 宁夏住房和城乡建设厅网站首页网站建设功能的策划书
  • 网站开发技术期末考试 及答案博罗做网站技术
  • 手机网站重要性网络公司都有哪些
  • 淘宝客 网站 备案做图片能去哪些网站吗
  • 武冈做网站厦门市保障性住房官网
  • 哈尔滨市住房与城乡建设局网站建设网站商城