项目遇到一个特殊的情况,需要提供一个接口根据传入的值去调用不同的方法,所以导致产生了很多个switch,后面写完想着switch太多了,能不能优化一下,就丢给了chatgpt,下面是优化前和优化后的的代码。

/// <summary>
/// 系统维护通用接口
/// </summary>
/// <returns></returns>
public string SystemMaintenance(CommonSystemMaintenance commonSystemMaintenance)
{
string result=string.Empty;
ResultData data = new ResultData();
switch (commonSystemMaintenance.Type)
{
case InterfaceType.HospitalEmployee:
data = HospitalEmployee(commonSystemMaintenance);
break;
case InterfaceType.Settlement:
data = Settlement(commonSystemMaintenance);
break;
case InterfaceType.ModifySettlementFee:
data = ModifySettlementFee(commonSystemMaintenance);
break;
case InterfaceType.ModifySettlementPaymentNumberAndTime:
data = ModifySettlementPaymentNumberAndTime(commonSystemMaintenance);
break;
case InterfaceType.SettlementPaymentMethod:
data = SettlementPaymentMethod(commonSystemMaintenance);
break;
case InterfaceType.ModifySettlementPaymentMethod:
data = ModifySettlementPaymentMethod(commonSystemMaintenance);
break;
case InterfaceType.FinancialPayment:
data = FinancialPayment(commonSystemMaintenance);
break;
case InterfaceType.ModifyFinancialPayment:
data = ModifyFinancialPayment(commonSystemMaintenance);
break;
case InterfaceType.FinancialPaymentDetail:
data = FinancialPaymentDetail(commonSystemMaintenance);
break;
case InterfaceType.ModifyFinancialPaymentDetail:
data = ModifyFinancialPaymentDetail(commonSystemMaintenance);
break;
case InterfaceType.MedicalInsuranceError:
data = MedicalInsuranceError(commonSystemMaintenance);
break;
case InterfaceType.MedicalInsuranceSettlement:
data = MedicalInsuranceSettlement(commonSystemMaintenance);
break;
case InterfaceType.PatientVisitInformation:
data = PatientVisitInformation(commonSystemMaintenance);
break;
case InterfaceType.UpdatePatientVisitAppendix:
data = UpdatePatientVisitAppendix(commonSystemMaintenance);
break;
case InterfaceType.LISData:
data = LISData(commonSystemMaintenance);
break;
case InterfaceType.PACSProject:
data = PACSProject(commonSystemMaintenance);
break;
case InterfaceType.UpdatePACSProject:
data = UpdatePACSProject(commonSystemMaintenance);
break;
case InterfaceType.GoodsStorage:
data = GoodsStorage(commonSystemMaintenance);
break;
case InterfaceType.ModifyGoodsStorage:
data = ModifyGoodsStorage(commonSystemMaintenance);
break;
case InterfaceType.GoodsInStocking:
data = GoodsInStocking(commonSystemMaintenance);
break;
case InterfaceType.AlterGoodsInStock:
data = AlterGoodsInStock(commonSystemMaintenance);
break;
case InterfaceType.GoodsOutStock:
data = GoodsOutStock(commonSystemMaintenance);
break;
case InterfaceType.AlterGoodsOutStock:
data = AlterGoodsOutStock(commonSystemMaintenance);
break;
case InterfaceType.ModifySettlementPaymentNumber:
data = ModifySettlementPaymentNumber(commonSystemMaintenance);
break;
case InterfaceType.PatientVisitAndFeeInformation:
data = PatientVisitAndFeeInformation(commonSystemMaintenance);
break;
case InterfaceType.PrescriptionDetails:
data = PrescriptionDetails(commonSystemMaintenance);
break;
}
}
catch (Exception ex)
{ }
return result;
}
/// <summary>
/// 系统维护通用接口
/// </summary>
/// <returns></returns>
public string SystemMaintenance(CommonSystemMaintenance commonSystemMaintenance)
{
try
{
// 创建字典存储处理逻辑
var handlers = new Dictionary<InterfaceType, Action<CommonSystemMaintenance>>
{
{ InterfaceType.HospitalEmployee, HospitalEmployee },
{ InterfaceType.Settlement, Settlement },
{ InterfaceType.ModifySettlementFee, ModifySettlementFee },
{ InterfaceType.ModifySettlementPaymentNumberAndTime, ModifySettlementPaymentNumberAndTime },
{ InterfaceType.SettlementPaymentMethod, SettlementPaymentMethod },
{ InterfaceType.ModifySettlementPaymentMethod, ModifySettlementPaymentMethod },
{ InterfaceType.FinancialPayment, FinancialPayment },
{ InterfaceType.ModifyFinancialPayment, ModifyFinancialPayment },
{ InterfaceType.FinancialPaymentDetail, FinancialPaymentDetail },
{ InterfaceType.ModifyFinancialPaymentDetail, ModifyFinancialPaymentDetail },
{ InterfaceType.MedicalInsuranceError, MedicalInsuranceError },
{ InterfaceType.MedicalInsuranceSettlement, MedicalInsuranceSettlement },
{ InterfaceType.PatientVisitInformation, PatientVisitInformation },
{ InterfaceType.UpdatePatientVisitAppendix, UpdatePatientVisitAppendix },
{ InterfaceType.LISData, LISData },
{ InterfaceType.PACSProject, PACSProject },
{ InterfaceType.UpdatePACSProject, UpdatePACSProject },
{ InterfaceType.GoodsStorage, GoodsStorage },
{ InterfaceType.ModifyGoodsStorage, ModifyGoodsStorage },
{ InterfaceType.GoodsInStocking, GoodsInStocking },
{ InterfaceType.AlterGoodsInStock, AlterGoodsInStock },
{ InterfaceType.GoodsOutStock, GoodsOutStock },
{ InterfaceType.AlterGoodsOutStock, AlterGoodsOutStock },
{ InterfaceType.ModifySettlementPaymentNumber, ModifySettlementPaymentNumber },
{ InterfaceType.PatientVisitAndFeeInformation, PatientVisitAndFeeInformation },
{ InterfaceType.PrescriptionDetails, PrescriptionDetails }
};
// 获取处理逻辑并执行
Action<CommonSystemMaintenance> handler;
if (handlers.TryGetValue(commonSystemMaintenance.Type, out handler))
{
handler(commonSystemMaintenance);
}
else
{
// 处理未找到匹配的情况
throw new ArgumentException($"未找到处理 {commonSystemMaintenance.Type} 的逻辑。");
}
}
catch (Exception ex)
{ }
return "";
} // 定义处理逻辑的方法
public void HospitalEmployee(CommonSystemMaintenance commonSystemMaintenance)
{
// 处理 HospitalEmployee 的逻辑
} public void Settlement(CommonSystemMaintenance commonSystemMaintenance)
{
// 处理 Settlement 的逻辑
} // 其他处理逻辑的方法类似 // 定义枚举类型和自定义属性
public enum InterfaceType
{
[CustomAttribute("HospitalEmployee")]
HospitalEmployee, [CustomAttribute("Settlement")]
Settlement, // 其他枚举值和属性类似
}

C#、.Net优化多个 switch 语句实例的更多相关文章

  1. 优化长的switch语句

    突然想到之前碰到的一个优化的面试题,现在想想switch用的太傻 public enum FormatType { GetKey, GetValue } public class Format { p ...

  2. 通过goto语句学习if...else、switch语句并简单优化

    goto语句在C语言中实现的就是无条件跳转,第二章一上来就介绍goto语句就是要通过goto语句来更加清楚直观的了解控制结构. 我理解的goto语句其实跟switch语句有相似之处,都是进行跳转.不同 ...

  3. Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用

    ylbtech-Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用 1.返回顶部 1. Java 实例 - enum 和 switch 语句 ...

  4. C++ 反汇编:关于Switch语句的优化措施

    流程控制语句是C语言中最基本的判断语句,通常我们可以使用IF来构建多分支结构,但同样可以使用Switch语句构建,Switch语句针对多分支的优化措施有4种形式,分别是,IF-ELSE优化,有序线性优 ...

  5. 透过IL看C#:switch语句(转)

    透过IL看C# switch语句(上) 摘要: switch语句是 C#中常用的跳转语句,可以根据一个参数的不同取值执行不同的代码.本文介绍了当向 switch语句中传入不同类型的参数时,编译器为其生 ...

  6. 7.21.02 switch语句

    switch语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. 语法 switch语法格式如下: switch(expression) { case value : //语句 break ...

  7. PHP Switch 语句

    PHP Switch 语句 switch 语句用于根据多个不同条件执行不同动作. PHP Switch 语句 如果您希望有选择地执行若干代码块之一,请使用 switch 语句. 语法 switch ( ...

  8. JavaScript switch 语句

    switch 语句用于基于不同的条件来执行不同的动作. JavaScript switch 语句 请使用 switch 语句来选择要执行的多个代码块之一.你可以在JavaScript编程实战中了解怎么 ...

  9. 用switch语句根据消费金额计算折扣

    最终输出效果: 代码: package com.mingrisoft; import java.util.Scanner; public class ProductPrice { public sta ...

  10. 逆向随笔 - switch 语句深入分析

    switch case 语句在c语言里还是比較简单的.可是被编译出来之后,优化结果往往让人非常疑惑.全然看不懂,以下我们一次次的尝试,看看编译器究竟把switch语句变成什么样了.   ① 先上个最简 ...

随机推荐

  1. 洛谷 P6625 [省选联考 2020 B 卷] 卡牌游戏

    洛谷 P6625 [省选联考 2020 B 卷] 卡牌游戏 题目传送门 Solution 每次操作的得分都是一个前缀和,即每次的得分为\(p=\sum_\limits{i=1}^ka_i(2\le k ...

  2. Linux服务器(CentOS/Ubuntu)接口Bond模式详解、配置指南及交换机对应接口的配置示例

    以下是关于Linux服务器(CentOS/Ubuntu)与交换机对接的接口Bond模式详解.配置指南及交换机配置示例(思科/华为/华三) 的全面说明: 一.Linux Bonding 模式对比 模式 ...

  3. lora网关采集温室大棚温湿度数据案例

      1.概述 运用lora网关远程控制温室大棚内风机,日光灯,温湿度传感器等设备.可以实现远程获取现场环境的空气温湿度.土壤水分温度.二氧化碳浓度.光照强度可以自动控制温室湿帘风机.喷淋滴灌.加温补光 ...

  4. mac如何卸载飞连

    当我们在[应用程序]下面把飞连移到废纸篓时,会提示被锁定无法删除 我们需要先把软件解锁,执行以下命令, 再移到废纸篓即可 sudo /usr/bin/chflags -R noschg /Applic ...

  5. Windows链接创建神器:一键生成符号链接与硬链接的智能批处理工具【NuGet】

    [自用工具]NuGet 或各项目中共用部分目录或文件,利用DOS符号链接解决重复文件的多份拷贝,起到节省磁盘空间的作用. 告别复杂的命令行操作!这款增强版批处理脚本让Windows链接创建变得简单.直 ...

  6. github action 与自动化部署

    前言 github action 一直都是自动化部署的引领者,今天就介绍一下如何它部署咱们的网站和服务 服务器生成ssh密钥 通过终端(finalshell.xshell)登录到您的 linux 服务 ...

  7. TeX,LaTeX和KaTeX

    TeX 计算机排版系统 七十年代末,Donald E. Knuth在看自己的<电脑编程的艺术>校样时,感觉计算机排版的校样质量低到无法忍受,于是决定自己开发一个高质量的计算机排版系统,这样 ...

  8. CF1990C Mad MAD Sum 题解

    CF1990C Mad MAD Sum 好题.考虑操作一次之后序列的性质,不难发现存在单调性.因为定义为出现至少两次的最大值,而从左到右最大值是可以继承的,所以单升不降. 然后,手玩一下发现之后的操作 ...

  9. paraview 导出表面网格

    简介 RT 步骤 如下所示 然后save data即可

  10. Ansys

    简介 Ansys 使用 explore (爆炸)功能分离 装配体,然后自己手动生成接触面 采用摩擦 image