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

湖州做网站推广的公司网站发布方式 提高

湖州做网站推广的公司,网站发布方式 提高,查找使用wordpress的网站,在线代理网页免费前言近段时间在准备公司的技术分享#xff0c;所以这段时间将大部分时间放在准备分享内容上去了。博客也就停了一下下。在.NET Core中处理依赖注入问题时#xff0c;往往是定义好了一个操作规范的接口#xff0c;会有N多个基于不同技术的实现#xff0c;根据实际情况在项目… 前言近段时间在准备公司的技术分享所以这段时间将大部分时间放在准备分享内容上去了。博客也就停了一下下。在.NET Core中处理依赖注入问题时往往是定义好了一个操作规范的接口会有N多个基于不同技术的实现根据实际情况在项目中去使用某一个实现。但是偶尔会出现这样的情况在某一个地方需要同时使用到两种或两种以上的实现这个时候我们要怎么处理呢借助Autofac等第三方组件时是可以很容易的实现但是在写一些基础类库时会避免直接引用太多依赖组件。所以这里是只用微软自带的DI(Microsoft.Extensions.DependencyInjection)去处理。例子引入现在有一个接口和两个实现类。public interface IDemoService{    string Get(); } public class DemoServiceA : IDemoService{     public string Get()    {          return Service A;} }  public class DemoServiceB : IDemoService{     public string Get()    {          return Service B;} }常规的方法我们先在Startup中的ConfigureServices方法中添加我们的service。public void ConfigureServices(IServiceCollection services){services.AddSingletonIDemoService, DemoServiceA();services.AddSingletonIDemoService, DemoServiceB();services.AddMvc(); }然后在控制器中使用private IDemoService _serviceA;private IDemoService _serviceB;public ValuesController(IDemoService serviceA, IDemoService serviceB){_serviceA serviceA;_serviceB serviceB; }// GET api/values[HttpGet]public string Get(){    return ${_serviceA.Get()}-{_serviceB.Get()}; }我们的预期结果是Service A-Service B可是上面代码的实际结果却并不像我们想的那么简单可以看到这里输出的都是Service B连Service A的影子都没有看到。其实从代码都可以看出来它只能拿到其中一个Service的实现类那么我们要息怎样处理才能达到我们想要的效果呢其实思路比较简单上面导致不能拿到对应实现类本质上来讲应该说是它区分不了那个才是想要的我们想个办法让它能区分就好了。处理方法给我们的Service起个别名先是Startup中的ConfigureServices方法。public void ConfigureServices(IServiceCollection services){services.AddSingletonDemoServiceA();services.AddSingletonDemoServiceB();services.AddSingleton(factory {Funcstring, IDemoService accesor key {                     if (key.Equals(ServiceA)){                             return factory.GetServiceDemoServiceA();}                       else if (key.Equals(ServiceB))                     {                               return factory.GetServiceDemoServiceB();}                    else{                           throw new ArgumentException($Not Support key : {key});}};        return accesor;});services.AddMvc(); }这里并没有直接向上面那样一次性指定接口和对应的实现类而是用了AddSingleton的另一个重载方法。先将实现类注册一下然后再注册一下Funcstring, IDemoService先来说说这个Funcstring, IDemoService里面的string和IDemoService都分别代表什么。string 毫无疑问就是我们上面说到的别名IDemoService 这个就是我们要用的Service核心在于factory参数是IServiceProvider类型的所以我们可以根据这个factory去找到我们前面注册的实现类。这样解释一下是不是就清晰了呢然后再来看看在控制器上面怎么用。private IDemoService _serviceA;private IDemoService _serviceB;private readonly Funcstring, IDemoService _serviceAccessor;public ValuesController(Funcstring, IDemoService serviceAccessor){    this._serviceAccessor serviceAccessor;_serviceA _serviceAccessor(ServiceA);_serviceB _serviceAccessor(ServiceB); }// GET api/values[HttpGet]public string Get(){       return ${_serviceA.Get()}-{_serviceB.Get()}; }最后看看结果是不是和我们的预期一样。结果与预期一致。总结一对一或许是最好的方法也是最为理想的这样能避开很多不必要的问题。但是现实中总会出现特殊情况面对这些特殊情况我们也是需要能够重容的面对。原文地址http://www.cnblogs.com/catcher1994/p/handle-multi-implementations-with-same-interface-in-dotnet-core.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.ihoyoo.com/news/88072.html

相关文章:

  • 高清素材网站无水印中国建筑工程网施工资料
  • 如何建设自己的淘宝客网站express做静态网站
  • wordpress三站合一上海建筑设计研究院
  • cargo创建个人网站网站logo素材
  • 福建省住房和建设厅网站wordpress 虚拟币
  • 网站制作论文5000字找网络公司做推广费用
  • 网站建设与网页设计案例教程wordpress本地导出
  • h5网站建设建站1040视频app
  • 有关网站开发的国外书籍小说素材网站
  • 行业门户型网站网站ftp空间
  • 物流企业网站源码北京网站建设推荐安徽秒搜科技
  • 网站建设需要ui吗wordpress 页面管理
  • 湖北省交通建设监理协会网站可以免费发布招聘网站
  • 泉州品牌网站设计定制wordpress插件安装教程视频
  • 网站建设5000费用2022网站seo
  • 电子建设网站的目的wordpress官方模板下载
  • 企业网站建设基本要素机械配件采购平台
  • android开发和网站开发电子商务网络安全
  • 河源网站建设多少钱30天网站建设实录视频
  • 电子商务网站cmswordpress添加音乐
  • html5做网站总结二进制可以做网站是吗
  • 个人网站建设yxhuying短视频运营是做什么的
  • 网站开发哪种框架关键词智能优化排名
  • 漳州 网站设计wordpress慢 数据库
  • 我要注册公司怎么办太原百度快照优化排名
  • 网站建设7大概要多久安徽招标网官网
  • 网站上传图片教程wordpress负载均衡
  • 昆明网站开发哪家好郑州妇科
  • 台州网站开发storefront wordpress
  • 莱州网站建设价格如何做微信个人网站