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

做3d地形比较好的网站网站图片幻灯片效果

做3d地形比较好的网站,网站图片幻灯片效果,营销型网站建设电话,做网站 还是淘宝店依赖注入在asp.net core程序中,众所周知#xff0c;依赖注入基本上贯穿了整个项目#xff0c;以通用的结构来讲解#xff0c;控制器层(Controller层)依赖业务层(Service层),业务层依赖于仓储层(Repository层),而其他层级中也或多或少的使用了依赖注入,在这里不过多的对于依赖… 依赖注入       在asp.net core程序中,众所周知依赖注入基本上贯穿了整个项目以通用的结构来讲解控制器层(Controller层)依赖业务层(Service层),业务层依赖于仓储层(Repository层),而其他层级中也或多或少的使用了依赖注入,在这里不过多的对于依赖注入概念上不进行讲解,如果有不了解的同学可以在微软官网或者在搜索引擎搜索依赖注入相关概念,本文主要讲解如何在asp.net core中实现自己的依赖注入容器并且希望更多的同学能够去阅读源码码因为源码中暴露的一些抽象类或者接口向开发者提供了方便开发者自定义或者拓展的口子。好了不多啰嗦我们开始。First IServiceProviderFactory接口       用过Autofac的同学都知道在asp.net core3版本之后Autofac的使用方式稍微发生了一些变化,首先需要在Program.cs文件中需要使用Host.UseServiceProviderFactory方法,那实际上这个方法就是让开发者能够去实现自定义的依赖注入容器的一个拓展方法我们可以查看一下这个方法的定义注意看有个重点的接口就是IServiceProviderFactory接口这个接口实际上是指定服务提供者的一个抽象工厂泛型接口这是实现自定义IOC中最重要的接口之一也是最开始的一步实际上实现自定义依赖注入容器只需要实现两个接口就可以实现自定义容器,可以看到这个方法有两种参数机制一种是直接传入对应的 实现类另一种是使用委托的方式去创建对象并且传入了一个HostBuilderContext的对象我们会使用这种方式去实现。Second IServiceProvider接口       我们可以看到这个IServiceProviderFactory接口有两个实现方法一个是CreateBuilder方法里面传入IServiceCollection变量另一个方法是CreateServiceProvider方法传入我们这个接口指定的容器类的对象其中IocContainer类不依赖于任何一个抽象第一个方法的作用就是去构造这个容器的对象需要返回我们指定的类型的对象即是这个类是代表着容器存放服务的第二个方法是将上面构造的容器对象传入进来并且返回我们指定的服务提供者那概念很清晰了第一个IServiceProviderFactory接口是用来指定我们的容器是哪一个类是我们的容器以及哪一个是我们的服务提供者那实际上的IServiceProvider就是第二个重要的一个接口了这个接口是只有一个方法GetService方法参数是一个Type代表着我们是要去获取哪一个类型的参数返回值是Object返回下层依赖者所需要的具体的一个对象。Three 遵循规则实现自定义容器        那实际上自带的依赖注入容器也是遵循这种规则去实现的,它提供了一个自带的一个ServiceProvider的类去创建对象那大家都知道启动一个Core的一个程序自带的一些依赖对象都有一百多个那大家可能会觉得让自己去写这种一百多个对象的创建并且类别还是core的开发者所没有暴露出的类型创建起来会很麻烦并且还存在各种依赖让大家觉得可能自定义依赖注入容器可能很难实际上刚开始的时候我也是这么想的表达式树在我去年十二月份的时候就开始写代码了只是今年才上传到博客那实际上自定义容器我也是去年开始研究的刚开始也是写了很多判断因为它内部启动的时候大的依赖了两个东西一个是配置的IConfiguration还有一个就是一个Host的一个类下面又依赖了很多很多的类感觉创建起来很麻烦后来在想到了反射是可以获取程序运行时的元数据并且去构造某个类型那实际上我们是可以用反射去实现一种投机取巧的方式去实现自定义依赖注入容器那就是将启动所依赖服务由自带的ServiceProvider去进行提供和创建一些项目开发中使用的服务由我们去进行管理那说到这已经有很多同学知道了怎么去进行了我们看代码。          上图中我们可以看到Provider类是实现了IServiceProvider的接口并且实现了GetService的方法可以看到我使用的方式是去用反射去获取自带的ServiceProvider的构造函数然后创建这个对象并且在GetService方法中首先去判断能否从自带的Provider去获取和创建对象如果获取不到那说明是我们项目中所需要的类型从而使用我们自定义的容器去进行获取对象默认的获取不到是因为我们在创建ServiceProvider对象的时候传入了IServiceCollection的对象这里所包含的就是启动Core程序所需要的依赖的集合这样我们就可以保证程序启动的时候是可以正常启动的然后在运行中请求中所需要的服务类型是由我们自己去创建对象的所以这样就实现了简单的IOC依赖注入容器并且替换掉自带的容器。Four 控制器层的属性注入以及拓展容器实现属性注入和一接口多实现        按照我文章刚开始的时候所说微软给我们暴露了很多供我们自定义的接口和 抽象类那如果需要在控制器层实现属性注入那怎么办呢那实际上还有一个接口用来让我们去创建控制器那就是IControllerFactory接口这个接口有两个方法,一个是CreateController方法和ReleaseController方法顾名思义就是一个是创建控制器一个是销毁控制器那我们可以在第一个方法去实现控制器层的属性注入以及一个接口多实现该怎么去获取的思路如果是属性注入我们是需要去创建一个特性用来标记这个属性是用来从容器中获取对象的我们可以在控制器层或者其他类中使用类似的方法去操作属性注入赋值如果是一个接口多实现呢也是需要去定义两个特性一个特性标记在实现类上面并且构造函数中有一个string类型的参数用来标记是在容器中 注入的时候使用某个名称用来标识这个类型其次在我们进行获取这个类型的时候需要在参数或者属性用我们定义的第二个特性标记这个参数或者属性是从容器中获取的是哪一个名称哪一个类型的对象这样就可以实现一个属性注入和一个接口多实现的一个操作。 总结        以上是我个人实现自定义IOC的一个解决思路并且在net core5以及net core6中实现且5到6实现了无缝升级没有任何错误希望能够对各位读者有所帮助。还是希望众多道友能够多解读源码去查看core框架开发者提供给我们暴露给我们的自定义拓展的一些接口和抽象类。后面我依旧会持续更新core自定义相关的东西会包括配置还有日志等其他方面的东西多线程方面的代码已经写完可以在QQ群6406277群文件中进行查找也可以查看哪个net群有叫四川观察的那个就是我。IL后面我也写了很多东西后续也会一一奉上。在此谢谢各位看官浏览。
http://www.zqtcl.cn/news/583676/

相关文章:

  • 建设企业网站哪家好网站页面布局设计思路
  • 长尾词在线挖掘数字营销服务商seo
  • cms傻瓜式建站系统帝国 cms 网站关键字
  • 东莞营销网站建设直播php 网站 项目
  • 网站访问量什么意思wordpress 静态商店
  • 汕头建站平台网站如何配置域名
  • 大芬网站建设石嘴山网站建设
  • 彩票网站开发解决方案wordpress网站如何与关联
  • 怎么做各大视频网站的会员代理芜湖的网站建设
  • 番禺做网站开发免费素材下载网站
  • 做网站服务公司王业美
  • 遵义网站建设推广城乡住房建设部官网查询
  • 电商设计网站素材免费建站网站seo
  • 做雕塑网站丹阳网站推广
  • 夏津网站建设公司应用分析网站
  • 长春seo网站优化个人网站要有什么
  • 网站开发流程步骤 口袋青海个人旅游网站建设
  • php企业网站多少钱图书馆网站建设建议
  • 企业网站建设综合实训学习体会个人网站空间申请
  • 企业小型网站要多少钱合肥城乡建设网站首页
  • 济南建站公司注意事项做钓鱼网站要什么工具
  • 网站建设数据录入创建网络公司
  • 行业网站建设报价摄影标志logo设计欣赏
  • 做reference的网站网站首页 模板
  • 微信php网站开发流程图做网站优化好的网络公司
  • 网站显示百度地图长沙制作网页的基本步骤
  • 免费做封面的网站哈尔滨网页制作要多少钱
  • html免费网页素材网站优化教程
  • 百度关键词网站排名优化软件seo服务 收费
  • 中英文切换网站网站建设的关键问题