网站建设 百度贴吧北京给网站做系统的公司名称

bicheng/2026/1/17 13:49:10/文章来源:
网站建设 百度贴吧,北京给网站做系统的公司名称,建设网站用户名是什么原因,网页设计心得体会正文最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式#xff0c;为了灵活我在依赖注入的时候把这两种实现都给注入进了依赖注入容器中#xff0c;但是在服务调用的时候总是获取到最后注入的那个方法的实现#xff0c;这时候就在想能不能实现动态的选… 最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式为了灵活我在依赖注入的时候把这两种实现都给注入进了依赖注入容器中但是在服务调用的时候总是获取到最后注入的那个方法的实现这时候就在想能不能实现动态的选择使用哪种实现呢如果可以的话那么我只需要在配置文件中进行相应的配置即可获取到正确的实现方法的调用这样的话岂不快哉今天我们就来一起探讨下实现这种需求的几种实现方式吧。作者依乐祝原文地址https://www.cnblogs.com/yilezhu/p/10236163.html代码演示在开始实现的方式之前我们先模拟下代码。由于真实系统的结构比较复杂所以这里我就单独建一个类似的项目结构代码。项目如下图所示接下来我来详细说下上面的结果作用及代码。MultiImpDemo.I 这个项目是接口项目里面有一个简单的接口定义ISayHello代码如下    public interface ISayHello{        string Talk();}很简单就一个模拟讲话的方法。MultiImpDemo.A 这个类库项目是接口的一种实现方式里面有一个SayHello类用来实现ISayHello接口,代码如下MultiImpDemo.B 这个类库项目是接口的另一种实现方式里面也有一个SayHello类用来实现ISayHello接口,代码如下MultiImpDemo.Show 这个就是用来显示我们模拟效果的API项目首选我们在ConfigureServices中加入如下的代码来进行上述两种实现方式的注入在api实现里面获取服务并进行模拟调用代码很简单对不对你应该看的懂吧这时候我们运行起来项目然后访问APIapi/values这个接口结果总是显示如下的结果两种需求对应两种实现这里有两种业务需求第一种业务中只需要对其中一种实现方式进行调用如业务需要SqlServer数据库的实现就行了。第二种是业务中对这两种实现方式都有用到如业务急需要用到Oracle的数据库实现同时也有用到SqlServer的数据库实现需要同时往这两个数据库中插入相同的数据。下面分别对这两种需求进行解决。业务中对这两种实现方式都有用到针对这种情况有如下两种实现方式第二种实现方式其实在ASP.NET Core中当你对一个接口注册了多个实现的时候构造函数是可以注入一个该接口集合的这个集合里是所有注册过的实现。下面我们先改造下ConfigureServices,分别注入下这两种实现接着继续改造下注入的方式这里我们直接注入IEnumerableISayHello如下代码所示然后运行起来看下效果吧利用AddTransient的扩展方法public static IServiceCollection AddTransientTService(this IServiceCollection services, FuncIServiceProvider, TService implementationFactory) where TService : class;然后根据我们的配置的实现来进行服务实现的获取。下面就让我们利用代码来实现一番吧然后我们具体调用的依赖注入的方式需要变化一下然后运行看下效果吧可以看到A跟B的实现都获取到了效果实现业务只需要对其中一种实现方式的调用这时候我们可以根据我们预设的配置来动态获取我们所需要的实现。这段话说的我自己都感觉拗口。话不多少开鲁吧这里我将介绍三种实现方式。根据我们的配置文件中设置的key来进行动态的注入。这种方式实现之前首先得进行相应的配置如下所示  CommonSettings: {    ImplementAssembly: MultiImpDemo.A}然后在注入的时候根据配置进行动态的进行注入 services.AddTransientISayHello, A.SayHello();            services.AddTransientISayHello, B.SayHello();然后在服务调用的时候稍作修改OK,到这里运行一下看下效果吧然后改下配置文件再看下效果第二种实现方式即接口参数的方式这样可以避免上个方法中反射所带来的性能损耗。这里我们改造下接口接口中加入一个程序集的属性如下所示public interface ISayHello{        string ImplementAssemblyName { get; }        string Talk();}对应的A跟B中的实现代码也要少做调整A: public string ImplementAssemblyName MultiImpDemo.A;        public string Talk(){            return Talk from A.SayHello;}B: public string ImplementAssemblyName MultiImpDemo.B;        public string Talk(){            return Talk from B.SayHello;}然后在实现方法调用的时候稍微修改下效果自己运行下看下吧第三种实现是根据配置进行动态的注册首先修改下ConfigureServices方法这样的话就会根据我们的配置文件来进行动态的注册然后我们像往常一样进行服务的调取即可  private readonly ISayHello _sayHello;        public ValuesController(ISayHello sayHello)        {_sayHello sayHello;}        // GET api/values[HttpGet]        public ActionResultIEnumerablestring Get(){            return new string[] { _sayHello.Talk() };}运行即可得到我们想要的效果总结本文从具体的业务需求入手根据需求来或动态的进行对应服务的获取或同时使用两个不同的实现希望对您有所帮助如果您有更多的实现方法可以在下方留言或者加入.NET Core实战千人群跟637326624大伙进行交流最后感谢您的阅读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何做网站服务器映射网站开发人员应具备什么素质

17.1 进程介绍 在Windows下打开任务管理器就可以查看到系统所有进程,如图17-1所示。 图17-1 Windows下的任务管理器 这里列出了系统中所有的进程。不过也可以使用命令行工具来查看进程。每个进程都会有一个process ID,简称为pid。 17.2 查看进程 也可…

保定网站制作哪家好建设Wordpress能更新到最新版本

绘制如下图形...... 作者不想写了,也不会写,明显老师刁难......我已畏惧 Im so tired......

青岛网站设计皆挺青岛山西建设工程执业注册中心网站

官网:https://docs.docker.com/engine/reference/commandline/init/ 简介 docker init是一个命令行实用程序,可帮助初始化项目中的 Docker 资源。.dockerignore它根据项目的要求创建 Dockerfile、Compose 文件。这简化了为项目配置 Docker 的过程&#…

上海专业网站建设机构wordpress中文更改

目录 一、前言 二、正文 Ⅰ.核心概念: Ⅱ.优势: Ⅲ.应用场景:

打车网站开发长春关键词排名公司

以gitee为例,GitHub也可参考本文 创建远程仓库 在自己的gitee主页 创建本地仓库 在文件夹下,右键→git bash here git init添加gitignore vi .gitignoregitignore里的内容根据自己实际情况设置,这里举个例子 # #开头的是注释 # Prer…

关于公司网站建设方案收集上海网站建设有限公司

优质博文:IT-BLOG-CN 一、题目 给你一个数组nums和一个值val,你需要"原地"移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并"原地"修改输入数组。元…

河西区做网站的公司网站建设的感想与建议

最近在做搜索召回率的提升工作。粮草未动兵马先行!在做之前应该先有一把尺子来衡量召回率的好坏。所以应该先构建测试数据集,然后去做标准化测试。 有了测试机集以后。再去做搜索优化,才能看出来效果。 当然可以选择一些开源的测试集。如果可…

西宁市城乡规划建设局网站优设网官网首页

源码介绍: 最新版WordPress系统文章自动采集插件,它是一款帮助用户提供方便快捷的文章自动采集方案的插件。WordPress自动采集插件,让内容采集变得高效便捷。作为Auto Post pro完美运行版,这里分享的是WordPress文章采集插件Auto…

西峡做网站网站建设有哪三部

二叉查找树(BST) 二叉树的一种应用就是来实现堆,今天我们再看看用二叉查找树(Binary Search Tree, BST)。 前面有章节说到了查找操作,包括线性查找、二分查找、哈希查找等,线性查找效率比较低,二分又要求必须是有序的序列&#x…

东莞网站建设(乐云践新)应该选用哪种口罩

目录 声明 前言 正文 (1)下载git压缩包 (2)git压缩包解压 (3)解压完成后需要进行源码的编译操作 a.首先进去到解压后的文件目录中: b.执行: 编译的过程中可能遇到的问题&am…

福州市交通建设集团有限公司网站江苏seo和网络推广

工厂模式 工厂函数通常是指一个函数,它用来创建和返回其他函数或对象的实例。 人话: 当new Class 或 Function 时,根据传入的参数,而返回不同的值,这就是工厂模式。 (所以可以说,这是我们开…

二级域名网站怎么建设无法与wordpress建立连接

阿里云2核4G服务器多少钱一年?2核4G配置1个月多少钱?2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年。可以在阿里云CLUB中心查看 aliyun.club 当前最新2核4G服务器精准报价、优惠券和活动信息。 阿里云官方2…

局域网网站建设步骤如何做国外外贸网站

ERR_SSL_KEY_USAGE_INCOMPATIBLE报错原因 ERR_SSL_KEY_USAGE_INCOMPATIBLE 错误通常发生在使用 SSL/TLS 连接时,指的是客户端和服务器之间进行安全通信尝试失败,原因是证书中的密钥用途(Key Usage)或扩展密钥用途(Extended Key Usage, EKU)与正在尝试的操作不兼容。这意味…

怎样运营推广网站屏蔽蜘蛛抓取 对网站有什么影响

阿里云8核32G服务器g8y租用优惠价格243.30元/月,配置云服务器g8y(ecs.g8y.2xlarge)8核32G、按固定带宽1M-5M、可选ESSD云盘40G起,优惠价格243.30元一个月, 阿里云服务器优惠活动 aliyunfuwuqi.com/go/aliyun 阿里云服务…

网络推广是什么职业合肥网络seo推广服务

C#语言中用于结构化程序设计的三种基本结构是:顺序结构、选择结构、循环结构。本文详细整理了以上三种结构的用法,案例。 文章目录 4.1 顺序结构4.1.1 赋值语句4.1.2 输入语句4.1.3 输出语句4.1.4 复合语句4.1.5 应用实例4.2 选择结构4.2.1 if条件语句4.2.2 switch结构4.3 循…

上海企业建站公司哪家好钦州做网站

鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 鸿蒙开发-UI-页面路由 鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 鸿蒙开发-UI-图形-图片 鸿蒙开发-UI-图形-绘制几何图形 鸿蒙开发-UI-图形-绘制自定义图形 鸿蒙开发-UI-图形-页面内动画 文章目录 前言 一、基本概…

手机网站设计建设服务没内涵网站源码

众所周知,TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上,视频监控…

学校网站如何建设农业银行官网

关于 Function Module 这个技术点,在面试过程中一般会考察以下几个问题: 1 函数处理类型的更新模式 一般会问到异步和事务(逻辑单元 LUW),异步函数的调试方式、SM13监控更新函数的执行过程(V1 与 V2 模式…

站酷网官网入口蜂蜜网络营销推广方案

让数据中台真正落地是实现数字化转型的重中之重。企业做好数据治理、体系建设及人才配备等前期工作后,接下来要做的是数据中台实施落地的关键。 企业首先要掌握数据中台建设的三大核心要素:选对数据建设方式、厘清建设思路、避开数据中台建设误区&#…

中山做网站的公司哈尔滨高端模板建站

1. JavaScript 特殊字符 2. 正反斜杠互相替换 a/b/c.replace(/\//g,\\) // "a\b\c" $0.value.replace(/\\/g,\/) // a/b/c 获取到 而不提取出 某个值后进行直接处理 \ 有转义功能,所以一旦解析必然转义,通常是直接获取到数据源…