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

一个巧用委托解决的问题(C#)

         个人觉得是委托应用的一个很好的例子,故做一下分享,希望能帮助到您,内容比较简单,大佬可以跳过。我是做桌面医疗软件开发的,前段时间在做一个需求。在签发检验项目医嘱时,调用第三方接口,然后带出检验项目对应的采血管医嘱,生成医嘱时,需要调用UI界面的一个方法来获取到医嘱序号,不然会导致报错,而调用医嘱接口的逻辑时在业务逻辑层,不在UI层,所以无法直接调用到UI界面的方法获取医嘱序号,为了遵循系统原来分层的架构,我们不能把调用接口的逻辑放在UI层。由于我们采用Spring.NET的架构,所以UI层和业务逻辑层之间的交互是通过接口的。业务逻辑层和UI层之间还嵌套其它的交互层,医嘱号的数据类型是int,所以想要在业务逻辑层获取到UI层的医嘱序号,我想到了C#自带的Func<int>委托。在备选的技术方案中,我觉得使用Func<int>委托是最合适的。为了描述它们直接的关系,我画了如下的图,为了简单,图是经过简化了的。

定义了接口方法InvokeOrder,为了与第三方接口对应的层交互

定义了接口实现类TestImpl,用于实际调用其它层中第三方接口的实现逻辑,其中getOrderFunc()是调用了委托的注册的方法,即下图类TestOrderUI中的方法private int GetOrderId()

定义了UI层的类TestOrderUI,其中public OrderSign()方法是签发医嘱的逻辑(即本文程序对应的入口点),Fuc<int> orderFunc=GetOrderId是注册委托方法,test.InvokeOrder(orderList,orderFunc)中的orderFunc是把委托通过方法参数进行传递。

好了,本文的内容到此结束。

相关文章:

  • AiChat是什么?
  • 数据结构与算法 — 贪心算法
  • vs2022启动一个CmakeLists.txt项目
  • rocketmq和rabbitmq总是分不清?
  • node 中的 nextTick 和 vue 中的 nextTick 的区别
  • 网络学习学习笔记
  • HDFSRPC安全认证Token篇2
  • 【MATLAB源码-第13期】基于matlab的4ASK的误码率BER和误符号率SER理论和实际对比仿真。
  • 外包干了17天,技术倒退明显
  • 用于3D建模的好文章
  • Nevion 3G-SDI系列光端机
  • 如何用Python编写简单的网络爬虫(页面代码简单分析过程)
  • 使用Docker部署开源项目FreeGPT35来免费调用ChatGPT3.5 API
  • C语言-翁恺-PTA-121-160课后练习题-04
  • RTSP/Onvif视频安防监控平台EasyNVR调用接口返回匿名用户名和密码的原因排查
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Android Volley源码解析
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Asm.js的简单介绍
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Docker: 容器互访的三种方式
  • Javascript Math对象和Date对象常用方法详解
  • LeetCode18.四数之和 JavaScript
  • PHP 小技巧
  • Python 反序列化安全问题(二)
  • quasar-framework cnodejs社区
  • 闭包--闭包之tab栏切换(四)
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 树莓派 - 使用须知
  • 微信开源mars源码分析1—上层samples分析
  • 学习笔记TF060:图像语音结合,看图说话
  • 转载:[译] 内容加速黑科技趣谈
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​香农与信息论三大定律
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $.ajax()参数及用法
  • (1)STL算法之遍历容器
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (9)STL算法之逆转旋转
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)Scala的“=”符号简介
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .jks文件(JAVA KeyStore)
  • .NET gRPC 和RESTful简单对比
  • .net和jar包windows服务部署
  • [100天算法】-实现 strStr()(day 52)
  • [Android] Implementation vs API dependency
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn