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

C#高级:利用反射让字符串决定调用哪个方法

一、反射的实现

using System;
using System.Reflection;
using System.Threading.Tasks;public class Calculator
{public int Add(int a, int b){return a + b;}public int Subtract(int a, int b){return a - b;}public int Multiply(int a, int b){return a * b;}public double Divide(int a, int b){if (b == 0) throw new DivideByZeroException();return (double)a / b;}
}class Program
{static void Main(){// 创建Calculator实例var calc = new Calculator();// 定义要调用的方法名和参数string methodName = "Multiply"; // 可以是"Subtract", "Multiply", "Divide"object[] parameters = new object[] { 5, 3 };// 获取Calculator类型Type type = calc.GetType();try{// 查找方法MethodInfo methodInfo = type.GetMethod(methodName);if (methodInfo != null){// 调用方法并输出结果var result = methodInfo.Invoke(calc, parameters);Console.WriteLine($"方法{methodName}的结果是: {result}");}else{Console.WriteLine("未找到该方法");}}catch (Exception ex){Console.WriteLine(ex.ToString());}}
}

二、思考:让字符串决定方法的调用

方法优点缺点适用场景
反射灵活,动态调用慢,易出错动态调用未知方法
委托字典快,可控需预定义固定方法集合快速调用
工厂模式可扩展,解耦结构复杂对象创建逻辑统一管理
表达式树编译后快,灵活复杂,难写动态构建逻辑
http://www.xdnf.cn/news/13350.html

相关文章:

  • Leetcode20 (有效的括号)
  • Windows笔记之Win11让非焦点窗口程序也能获得流畅性能的方法
  • [论文阅读] 算法 | 布谷鸟算法在声源定位中的应用研究
  • 三星手机Galaxy S24 Ultra使用adb工具关闭和开启系统更新
  • 达梦数据库 单机部署dmhs同步复制(DM8—>DM8)
  • 基于matlab/Simulink的三相四线逆变器并联系统仿真
  • SAP学习笔记 - 开发32 - 前端Fiori开发 Content Density(内容密度)
  • 代码随想录算法训练营day1
  • 【Django】性能优化-普通版
  • Oracle线上故障问题解决
  • 达梦数据库部署veri数据对比工具
  • ArcGIS中坐标系一致但图层无法重叠问题解决
  • MATLAB实现数字下变频低通滤波法
  • Java/Kotlin selenium 无头浏览器 [Headless Chrome] 实现长截图
  • OpenAI o3-Pro发布:o3 模型宣布降价80%API Key价格“跳水”,高级AI模型普及加速!
  • AI助手一键生成专业PPT(Gamma/Genspark/Kimi)
  • iOS 26 beta1 重新禁止 JIT 执行,Flutter 下的 iOS 真机 hot load 暂时无法使用
  • 8.3.1_冒泡排序
  • 支持向量机:在混沌中划出最强边界
  • OPenCV CUDA模块立体匹配------对立体匹配生成的视差图进行双边滤波处理类cv::cuda::DisparityBilateralFilter
  • vllm docker-compose 运行LLM-Research/Mistral-7B-Instruct-v0.3
  • Linux 杀进程指令详解:`kill -9 PID` 和 `kill -15 PID` 有什么区别?
  • 服务器上传或者下载在中间断网后继续上传方法
  • 【软考中级】软件设计师考试大纲
  • 新闻类鸿蒙应用功耗危机以及优化方案
  • Java反射完全指南
  • 高频面试之5Kafka
  • Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?如何解决
  • 机器人教学和实践的可编程智能仿生机器人平台——智能六足机器人
  • 【Java开发】Spring 事务开发完全指南:从入门到精通