来自我个人博客站点 note.axibug.com

首先第一步

通过反射实现字符串调用程序集下的类 
比如我们有一些功能类库、需要动态调用 
如下:

  1. namespace Sin365AIProject_01
  2. {
  3. public class B_Test1
  4. {
  5. public void GetT1()
  6. {
  7. Console.WriteLine("T1方法调用成功");
  8. }
  9. public void GetT2()
  10. {
  11. Console.WriteLine("T2方法调用成功");
  12. }
  13. }
  14. }

那么我们先写一个方法做反射实现、 
四个参数、 
分别是 程序集名称、类的名称、要调用的方法名称、 
以及 要调用的方法的参数集合

代码如下

  1. /// <summary>
  2. ///
  3. /// </summary>
  4. /// <param name="AssemblyName"></param>
  5. /// <param name="ClassFullName"></param>
  6. /// <param name="Method"></param>
  7. static void RefMainSet(string AssemblyName, string ClassFullName, string MethodName, object[] parameters)
  8. {
  9. //指定程序集、类名 获取类
  10. Type type = Assembly.Load(AssemblyName).GetType(ClassFullName);
  11. //需要调用的方法名
  12. MethodInfo meth = type.GetMethod(MethodName);
  13. //判断是否是静态方法
  14. if (!meth.IsStatic)
  15. //由于静态类和非静态类处理方式不同、
  16. //所以分开封装
  17. {//如果不是静态方法
  18. RefMainSetUnStatic(meth, type, parameters);
  19. }
  20. else
  21. {//如果是静态方法
  22. RefMainSetStatic(meth, type, parameters);
  23. }
  24. }
  25. /// <summary>
  26. /// 调用非静态方法的方法
  27. /// </summary>
  28. /// <param name="meth"></param>
  29. /// <param name="type"></param>
  30. /// <param name="parameters"></param>
  31. static void RefMainSetUnStatic(MethodInfo meth, Type type, object[] parameters)
  32. {
  33. //调用非静态方法
  34. object obj = Activator.CreateInstance(type);
  35. //调用参数
  36. meth.Invoke(obj, parameters);
  37. }
  38. /// <summary>
  39. /// 调用静态方法静态的方法
  40. /// </summary>
  41. /// <param name="meth"></param>
  42. /// <param name="type"></param>
  43. /// <param name="parameters"></param>
  44. static void RefMainSetStatic(MethodInfo meth, Type type, object[] parameters)
  45. {
  46. //调用参数
  47. meth.Invoke(null, parameters);
  48. }

好的、我们来进行最终调用(请回看一眼上面、我们需要调用的类库和下面的方法)

比如我们要调用 程序集Sin365AIProject_01 下的 B_Test1类 
下的GetT1方法。

那么调用方式、传入即可 
如下:

  1. RefMainSet("Sin365AIProject_01",
  2. "Sin365AIProject_01.B_Test1",
  3. "GetT1",
  4. new object[] ())

C#等语言、反射机制实现简单 智能语音人机交互(2)-- 皓月相关推荐

  1. 智能语音人机交互产业链及关键技术分析

    人机交互是一门计算机科学,主要研究关于设计.评价和实现供人们使用的交互计算系统以及相关现象的科学.人机交互的发展经历了以下几个阶段:手工作业阶段.作业控制语言与交互命令语言阶段.图形用户界面(GUI) ...

  2. C++ 反射机制的简单实现

    C++并不支持反射机制,只能自己实现. 如果需要实现字字符串到函数到映射,一定要使用到函数指针. 简单实现反射机制,根据字符串来构造相应到类.主要有以下几点: (1) 可以使用map保存字符从到函数指 ...

  3. java反射机制的简单使用和优缺点

    java反射机制的使用 一.反射是什么? JAVA反射机制是在运行状态中,对于任意一个类,都能够获取这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取类信息以及动 ...

  4. go语言反射机制、reflect.TypeOf、 reflect.ValueOf、字符串处理(详解)

    文章目录 前言 一.反射基本概念 ①go语言反射为何而生? ②反射弊端 ③怎样使用反射机制? 一.反射使用到的库及常用函数 ①用到的库 ②常用的字符串处理函数 (1) 将字符串加载为固定的类型strc ...

  5. Java反射机制(简单易懂)

    文章目录 前言 一.反射机制 二.反射的用途 三.反射相关的类(重要) 3.1 Class类(反射机制的起源 ) 3.2 通过反射调用构造方法 3.3 通过反射调用普通方法 3.4 通过反射调用类属性 ...

  6. java dao类 反射_java反射机制编写简单万能DAO类

    由于在搭建编写万能DAO时,已经写了大量的代码 在此只给出部分的测试源码 如有需要完整项目或者有任何建议联系973639421 package com.oman.bean; public class ...

  7. Java语言基础-反射机制、正则表达式

    反射机制 反射机制是在运行状态中,对于任意一个类,都能知道这个类(class文件)的所有属性和方法. 对于任意一个对象,都能调用它的任意一个方法和属性. 这种动态获取信息以及动态调用对象的方法的功能称 ...

  8. Java反射机制深入详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.概念 反射就是把Java的各种成分映射成相应的Java类. Class类的构造方法是private,由JVM创建. 反射是 ...

  9. java反射机制--reflection

    反射,reflection,听其名就像照镜子一样,可以看见自己也可以看见别人的每一部分.在java语言中这是一个很重要的特性.下面是来自sun公司官网关于反射的介绍:    Reflection is ...

最新文章

  1. shell批量添加用户
  2. 如何统计不重复姓名的个数?
  3. 告诉你SUV到底两驱好还是四驱好
  4. 网赚牛人:阿骏的这几年
  5. ARMLINUX学习笔记(5)-----ADS建立工程
  6. mips sw指令_指令重排的意义
  7. 做微信营销你知道男女用微信的习惯吗?
  8. php mysql调用crontab_PHP中如何实现crontab代码
  9. JS打开摄像头并截图上传
  10. 微软2011 GCR MVP Open Day 之旅!
  11. 当不知轴承型号时如何寻找轴承故障频率_电机轴承的故障诊断与失效分析
  12. 宝, 来学习一下CSS中的宽高比,让 h5 开发更想你的夜!
  13. Android app 启动优化
  14. vue多次引用组件,减少每个页面import的方法
  15. 浅聊一下Java中的char类型
  16. 科研入门-国际期刊会议
  17. matlab学习之蒙特卡罗 --渡口模型和赶火车问题(matlab编程)-----数模
  18. 软件开发测试男友花束,心理测试:4款花束,你最喜欢哪款?测出你最近最需要什么...
  19. 盛志凡:智能电视操作系统TVOS2.0-广电终端智能化的主引擎
  20. 富爸爸穷爸爸阅读思考

热门文章

  1. 数据结构---线性表
  2. android jmf,基于JMF与Android的无线视频监控系统的设计与实现
  3. 【调剂】中国舰船研究院本部(北京)2023年硕士研究生调剂招生简章
  4. 服务器固态硬盘当作系统盘,只当系统盘太屈才,这些地方都能用上固态硬盘!...
  5. 腾讯云自建k8s对接文件存储CFS
  6. 乔布斯时代的“老人”,一个个都离开苹果了
  7. sybase 快速删除大数据库的手顺方法
  8. win10、win7“以太网”将WiFi名称改成网络名称
  9. Android 辅助服务实战-游戏点击器
  10. 论文计算机本科字数,211本科毕业论文多少字?毕业论文多少字数要求