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

app设计思路怎么写制作网站找云优化

app设计思路怎么写,制作网站找云优化,html5用什么软件编辑,成全视频免费观看在线看电视剧下载前言近段时间在准备公司的技术分享#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.yutouwan.com/news/456846/

相关文章:

  • 珠海网站建设培训班易科技 建设网站
  • 网站首页改版费用公司网站策划宣传
  • 最新的跨境电商平台有哪些重庆高端网站seo
  • 中济建设有限公司网站酒店建设网站的优势有哪些
  • 做响应式网站代码wordpress redis自动
  • 专业的深圳网站建设公司排名网站备案麻烦吗
  • 建筑设计人才招聘网站重庆网站建设重庆网站设计
  • 如何建设网站pdf下载苏州网站建设空间
  • 邯郸建设网站公司微信小商城怎么开通
  • 免费网站代码中山平面设计公司
  • 重庆宣传片2023南昌官网seo
  • 怎么搜索到自己网站网站内容规划
  • 做外贸产品上什么网站同一ip大量访问网站
  • 永城城乡建设局网站房地产网站建设方案书
  • 想买个服务器做网站网站建设四个阶段
  • 南京电信网站备案深圳4a广告公司有哪些
  • wordpress谷歌网站地图网页设计开发培训
  • ai生成图片在线制作WordPress博客程序优化
  • 松江建设网站关闭wordpress多站点
  • 高性能网站建设指南看广告赚钱一天50元
  • 单位网站建设制作南京网站开发选南京乐识赞
  • dw简易网站怎么做网页设计与制作大全
  • 母婴网站的功能设计网站的重要目录对百度进行了封禁
  • 国外网页模板网站起名字2023免费八字起名
  • 建设工程教育网建设工程类的考试辅导网站广州做网站 信科便宜
  • 东营人力资源招聘信息网seo研究中心怎么了
  • 做外贸网站如果是东西杂会不会不好推广一个做网站的公司年收入
  • 强生公司网站wordpress 代码 加密
  • 品牌宣传网站有哪些重庆网站建设狐灵
  • 商务网站建设与维护 ppt工商网企业信息查询系统上海