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

广州住房公积金建设银行预约网站首页紧急访问升级狼人通知

广州住房公积金建设银行预约网站首页,紧急访问升级狼人通知,个人住房公积金查询,网站前端模板下载什么是依赖注入软件设计原则中有一个依赖倒置原则#xff08;DIP#xff09;#xff0c;为了更好的解耦#xff0c;讲究要依赖于抽象#xff0c;不要依赖于具体。而控制反转(Ioc)就是这样的原则的其中一个实现思路, 这个思路的其中一种实现方式就是依赖注入(DI)。什么是依… 什么是依赖注入软件设计原则中有一个依赖倒置原则DIP为了更好的解耦讲究要依赖于抽象不要依赖于具体。而控制反转(Ioc)就是这样的原则的其中一个实现思路, 这个思路的其中一种实现方式就是依赖注入(DI)。什么是依赖当一个类需要另一个类协作来完成工作的时候就产生了依赖。什么是注入 注入体现的是一个IOC控制反转的的思想。正转是自己来实例化需要的依赖。反转是类不应该自己创建它而是应该由它的调用者传给它。于是可以通过构造函数等让外界把依赖传给类。为什么要反转 为了在业务变化的时候尽少改动代码可能造成的问题。基于抽象添加新的实现。只需要在原来注入的地方改一下就可以了。什么是容器 容器统一管理系统中的所有依赖。容器负责两件事情绑定服务与实例之间的映射关系获取实例并对实例进行管理创建与销毁ASP .NET Core 中使用依赖注入IServiceCollection 负责注册服务是一个IListIServiceProvider 负责提供实例是由IServiceCollection的扩展方法BuildServiceProvider创建的。ServiceDescriptor 单个服务描述Type ServiceType: 服务的类型Type ImplementationType: 实现的类型ServiceLifetime Lifetime: 服务的生命周期object ImplementationInstance: 实现服务的实例FuncIServiceProvider, object ImplementationFactory: 创建服务实例的工厂注册ServiceCollection提供了三种注册方法分别对应着三种实例生命周期。AddSingleton 整个应用程序生命周期以内只创建一个实例AddScoped 在同一个Scope内只初始化一个实例可以理解为 每一个request级别只创建一个实例同一个http request会在一个 scope内AddTransient 每一次GetService都会创建一个新的实例做一个简单测试创建测试类在ConfigureServices里注册通过三种方法来获取这个Test类实例, Controller和View中代码如下运行结果如下03d437d6-2f18-452e-a7fd-ce62cea9038108b31487-b02b-4d62-bc2b-6d2026389f0c21a7fc13-6e7b-4590-910b-68d21a7a03d1说明三种方式获取了三个不同的实例, 刷新一下页面, 又变成了另外三个不同的值.现在在startup文件中将原来的 services.AddTransientITest,Test() 改为 services.AddScopedITest,Test() , 其他不变, 重新运行一下, 结果如下050fef7e-2dc3-4d7d-8733-683b54b40b0b050fef7e-2dc3-4d7d-8733-683b54b40b0b050fef7e-2dc3-4d7d-8733-683b54b40b0b刷新一下c9e5df8d-b085-4e3a-b883-fa083ba1d136 c9e5df8d-b085-4e3a-b883-fa083ba1d136 c9e5df8d-b085-4e3a-b883-fa083ba1d136三组数字相同, 刷新一下, 又变成了另外三组一样的值, 这说明在同一次请求里, 获取的实例是同一个。最常用的DBContext默认构建为Scope实例。即能减少实例初始化的消耗还能实现跨Service事务的功能。再将 services.AddScopedITest,Test() 改为 services.AddSingletonITest,Test() , 重新运行, 这次结果是42ef5162-5781-427b-ac9d-a152500ed32f 42ef5162-5781-427b-ac9d-a152500ed32f 42ef5162-5781-427b-ac9d-a152500ed32f发现三组值是一样的, 说明获得的是同一个实例, 在刷新一下页面, 仍然是这三组值, 说明多次请求获得的结果也是同一个实例.使用在Startup类ConfigureService中初始化public void ConfigureServices(IServiceCollection services){services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);services.AddTransientITest, Test();}方法中默认调用了services.AddMvc(), 是IServiceCollection的一个扩展方法 public static IMvcBuilder AddMvc(this IServiceCollection services), 作用就是向这个清单中添加了一些MVC需要的服务,例如Authorization、RazorViewEngin、DataAnnotations等。Controller中使用private ITest _test;private ILoggerHomeController _logger;public HomeController(ITest test, ILoggerHomeController logger){    this._test test;    this._logger logger; }通过HttpContext来获取实例HttpContext下有一个RequestedService同样可以用来获取实例对象不过这种方法一般不推荐。需要添加Microsoft.Extension.DependencyInjection的using来调用这个方法的。HttpContext.RequestServices.GetServiceITest()View中使用在View中通过inject声明inject ITest TestFromViewul liTestFromView.Guid/li /ul释放对于每次请求, 我们最初配置的根IServiceProvider通过CreateScope()创建了一个新的IServiceScope, 而这个IServiceScope的ServiceProvider属性将负责本次该次请求的服务提供, 当请求结束, 这个ServiceProvider的dispose会被调用。在2.0中, ServiceProvider只调用由它创建的 IDisposable 类型的 Dispose。 如果将一个实例添加到容器它将不会被释放。例如:services.AddSingletonITest(new Test()); 替换为其它的 Ioc 容器可以将默认的容器改为其他的容器, 比如Autofac, 需要把Startup类里面的 ConfigureService的 返回值从 void改为 IServiceProvider即可。而返回的则是一个AutofacServiceProvider。参考Dependency injection in ASP.NET Core全面理解 ASP.NET Core 依赖注入ASP.NET Core 2.0 : 六. 举个例子来聊聊它的依赖注入ASP.NET Core中的依赖注入1控制反转IoCASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便ASP.NET Core依赖注入最佳实践,提示技巧把旧系统迁移到.Net Core 2.0 日记2) - 依赖注入/日志NLogASP.NET Core依赖注入深入讨论在.NET Core中处理一个接口多个不同实现的依赖注入问题ASP.NET Core 2.0 依赖注入AspectCore中的IoC容器和依赖注入ASP.NET Core依赖注入解读使用Autofac替代实现原文地址:https://www.cnblogs.com/royzshare/p/9440914.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://wiki.neutronadmin.com/news/403770/

相关文章:

  • wordpress html5 视频播放陕西网络营销优化公司
  • 网站开发职业总结求十大猎头公司排名
  • 个人网站制作软件低价机票 网站建设
  • 男女直接做性视频网站校园网站建设培训简讯
  • 怎样创建企业网站关键词查询工具包括哪些
  • 网站设计基本步骤网站开发毕业设计中期检查表
  • 网站开发公司计划书WordPress做搜索引擎
  • 宣传类的网站定制公司官网
  • 电脑建网站软件长春百度推广电话
  • 网站建设可视化动态倒计时网站模板
  • 济南建站软件做网站注意的问题
  • 河北省网站建设公司排名网站推广软件免费下载
  • 网站手机网站制作标题正文型网站
  • 贵州建设项目门户网站手机有办法做网站吗
  • 湘潭网站seo磐石网络网站模板开发
  • 匠王红木在那个网站做众筹霞浦县网站seo优化排名
  • 手机网站建设课程教学做一个官网需要多少钱
  • 中山哪里网站建设网站建设需要多少钱小江网页设计
  • 网站安全和信息化建设商标 做网站 是几类
  • 宿迁网站建设报价网站伪静态规则
  • 云主机怎么安装网站php网站管理系统下载
  • 淘客网站开发视频教程百度网站怎么做友情链接
  • 木樨园网站建设东莞品牌型网站建设价格
  • 广西兴业县建设局网站深圳设计公司
  • 3g下订单的网站怎么做wordpress首页不显示指定分类
  • 互联网站从事登载新闻业务管理暂行规定邯郸信息港房产
  • 聚民网网站建设公司网站的详细步骤
  • 搜索引擎网站模板服装网站设计
  • 陕西富通建设工程有限公司网站家乡网站建设
  • 阿里巴巴申请网站怎么做漳州做网站公司