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

国外工装设计网站大全商城类网站和o2o网站

国外工装设计网站大全,商城类网站和o2o网站,二级域名解析网站,html网页制作基础知识#x1f680;简介 依赖注入#xff08;Dependency Injection#xff0c;简称DI#xff09;是一种实现控制反转#xff08;IoC#xff09;的技术#xff0c;用于减少代码之间的耦合度。通过依赖注入#xff0c;一个类可以从外部获取其依赖的对象#xff0c;而不是自己…简介 依赖注入Dependency Injection简称DI是一种实现控制反转IoC的技术用于减少代码之间的耦合度。通过依赖注入一个类可以从外部获取其依赖的对象而不是自己创建。这样可以使得代码更加模块化更易于测试和维护。 依赖注入的生命周期主要有以下三种 Transient每次请求都会创建一个新的实例。这是最常见的生命周期选项。Scoped在同一次请求中始终返回同一实例。如果在不同的请求中将会创建一个新的实例。Singleton每次请求都返回同一个实例即在首次请求时创建的实例。 安装NuGet包 首先我们先安装 Microsoft.Extensions.DependencyInjection这是Microsoft提供的依赖注入框架。 Transient 创建一个类包含一个属性Name和一个方法SayHi public class TestServicesImp {public string Name { get; set; }public void SayHi(){Console.WriteLine(Hello:Name);} } 通过ServiceCollection创建了一个服务容器然后通过AddTransient方法将TestServicesImp类型注册到这个服务容器中。这里使用的是瞬时生命周期也就是每次从容器中获取TestServicesImp类型时都会创建一个新的实例。 public class Program {public static void Main(string[] args){var serviceCollection new ServiceCollection();serviceCollection.AddTransientTestServicesImp();using (ServiceProvider sp serviceCollection.BuildServiceProvider()){var t1 sp.GetServiceTestServicesImp();t1.Name 张三;t1.SayHi();var t2 sp.GetServiceTestServicesImp();t2.Name 李四;t2.SayHi();var referenceEquals object.ReferenceEquals(t1, t2);Console.WriteLine(referenceEquals);}} } 运行结果因为在瞬时生命周期中每次获取服务都会创建新的实例。 因此通过object.ReferenceEquals方法比较了t1和t2是否是同一个实例结果会输出false Scoped 我们将上面代码中的服务注册AddTransient方法换成AddScoped,然后t2.SayHi();换成t1.SayHi();再试一次。 public static void Main(string[] args){var serviceCollection new ServiceCollection();serviceCollection.AddScopedTestServicesImp();using (ServiceProvider sp serviceCollection.BuildServiceProvider()){var t1 sp.GetServiceTestServicesImp();t1.Name 张三;t1.SayHi();var t2 sp.GetServiceTestServicesImp();t2.Name 李四;t1.SayHi();var referenceEquals object.ReferenceEquals(t1, t2);Console.WriteLine(referenceEquals);}} 发现这次的比较结果为true并且第二次调用SayHi也是使用t1但依然输出了李四因此可以得出两次获取服务得到的是同一个实例。 我们对代码再进行改造一下创建一个新的服务作用域通过这个作用域的ServiceProvider对象获取了另一个TestServicesImp的实例t2。 public static void Main(string[] args){var serviceCollection new ServiceCollection();serviceCollection.AddScopedTestServicesImp();using (ServiceProvider sp serviceCollection.BuildServiceProvider()){var t1 sp.GetServiceTestServicesImp();t1.Name 张三;using (IServiceScope scope sp.CreateScope()){var t2 scope.ServiceProvider.GetServiceTestServicesImp();t2.Name 李四;t1.SayHi();t2.SayHi();var referenceEquals object.ReferenceEquals(t1, t2);Console.WriteLine(referenceEquals);}}} 因为它们是在不同的Scope中获取的所以这次的结果是false Singleton  我们将服务注册AddScoped方法换成AddSingleton然后再执行一次 public static void Main(string[] args){var serviceCollection new ServiceCollection();serviceCollection.AddSingletonTestServicesImp();using (ServiceProvider sp serviceCollection.BuildServiceProvider()){var t1 sp.GetServiceTestServicesImp();t1.Name 张三;using (IServiceScope scope sp.CreateScope()){var t2 scope.ServiceProvider.GetServiceTestServicesImp();t2.Name 李四;t1.SayHi();t2.SayHi();var referenceEquals object.ReferenceEquals(t1, t2);Console.WriteLine(referenceEquals);}}} 在输出结果中很显然可以看出使用AddSingleton注册服务每次请求都返回同一个实例
http://wiki.neutronadmin.com/news/21026/

相关文章:

  • 清华大学网站建设方案网站推广的四个阶段包括
  • 企业建设网站的重要性深圳市网站开发公司
  • 网站设计师培训班个人交养老保险价格表
  • 下载好了网站模板怎么开始做网站?精通网站建设 pdf
  • 东莞电商网站建设现在公司做各网站要多少钱
  • 官渡网站建设wordpress让访客停留
  • 网站作品怎么做链接网站底部备案号代码
  • 网站制作佛山手机端网站seo
  • 肇庆cms建站系统营销什么意思
  • 哪有专做飞织鞋面的网站网络推广和网站推广平台
  • 杂志网站建设公司简介网页
  • 餐饮连锁企业网站建设方案免费网站设计软件
  • 基于响应式设计的网站建设打车软件开发
  • 零成本做网站百度网址大全电脑版
  • 网站优化公司大家好一键制作网站软件
  • 网站建设的实践报告网站制作切片
  • 手机小程序制作山东东营网络seo
  • 拿网站的文章做外链南京制作网页培训班
  • 中原郑州网站建设wordpress 题库
  • 笑话网站代码天津做网站哪个公司好
  • 深圳做网站报价南京网站优化步骤
  • 旅游网站开发的意义相关资料网站被安全狗拦截
  • 旅游的网站怎么做的软件商店应用
  • 网站做百度推广多少钱成都住建局官网蓉e办
  • 诸城营销型网站建设少儿编程几岁开始学最好
  • 网站制作公司嘉兴邢台seo价格
  • 论文网站开发网站建设教程多少钱
  • 呼和浩特市网站公司山东省建设厅注册中心网站
  • 建设外贸网站的细节小公司
  • 策划公司网站建设wordpress more标签失效