当前位置:   article > 正文

C#等语言、反射机制实现简单 智能语音人机交互(2)-- 皓月_c# ai对话

c# ai对话

来自我个人博客站点 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[] ())
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/376465
推荐阅读
相关标签
  

闽ICP备14008679号