C#等语言、反射机制实现简单 智能语音人机交互(2)

编程入门 行业动态 更新时间:2024-10-27 17:20:04

C#等语言、反射机制实现简单 智能语音<a href=https://www.elefans.com/category/jswz/34/1762555.html style=人机交互(2)"/>

C#等语言、反射机制实现简单 智能语音人机交互(2)

来自我个人博客站点 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)

本文发布于:2023-06-30 17:39:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/963836.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:人机   反射   语音   机制   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!