ExecuteMethod.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using Common;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using com.hnshituo.core.webapp.vo;
  8. namespace MeterModelLibrary
  9. {
  10. public class ExecuteMethod
  11. {
  12. /// <summary>
  13. /// 调用并执行指定类里面的函数
  14. /// </summary>
  15. /// <param name="nameSpace">命名空间</param>
  16. /// <param name="className">需要调用的类名(包含其命名空间)</param>
  17. /// <param name="methodName">需要调用的方法名</param>
  18. /// <param name="parameters">传递的参数值</param>
  19. /// <return>返回值</return>
  20. public RESTfulResult<T> GetAndExecuteMethod<T>(string nameSpace, string className, string methodName, object[] parameters = null)
  21. {
  22. RESTfulResult<T> rm = new RESTfulResult<T>();
  23. string strCls = nameSpace + "." + className;
  24. try
  25. {
  26. var type = Type.GetType(strCls);
  27. if (type == null)
  28. {
  29. rm.Succeed = false;
  30. rm.ResultMessage = "类[" + strCls + "]不存在";
  31. }
  32. var obj = type.Assembly.CreateInstance(strCls);
  33. //调用其方法
  34. var method = type.GetMethod(methodName);
  35. if (method == null)
  36. {
  37. rm.Succeed = false;
  38. rm.ResultMessage = "类[" + strCls + "]不存在方法[" + methodName + "]";
  39. }
  40. //*/
  41. //执行方法
  42. rm.Data = (T)method.Invoke(obj, parameters);
  43. rm.Succeed = true;
  44. }
  45. catch (Exception ex)
  46. {
  47. rm.Succeed = false;
  48. rm.ResultMessage = "类[" + strCls + "]的方法[" + methodName + "]执行失败:" + ex.Message;
  49. }
  50. return rm;
  51. }
  52. }
  53. }