一个巧用委托解决的问题(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是把委托通过方法参数进行传递。

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxy2847225301

测试使用

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值