MonoMethod.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System;
  2. using System.Reflection;
  3. namespace ETModel
  4. {
  5. public class MonoInstanceMethod : IInstanceMethod
  6. {
  7. private readonly object obj;
  8. private readonly MethodInfo methodInfo;
  9. private readonly object[] param;
  10. public MonoInstanceMethod(Type type, string methodName)
  11. {
  12. this.obj = Activator.CreateInstance(type);
  13. this.methodInfo = type.GetMethod(methodName);
  14. this.param = new object[this.methodInfo.GetParameters().Length];
  15. }
  16. public override void Run()
  17. {
  18. this.methodInfo.Invoke(this.obj, param);
  19. }
  20. public override void Run(object a)
  21. {
  22. this.param[0] = a;
  23. this.methodInfo.Invoke(this.obj, param);
  24. }
  25. public override void Run(object a, object b)
  26. {
  27. this.param[0] = a;
  28. this.param[1] = b;
  29. this.methodInfo.Invoke(this.obj, param);
  30. }
  31. public override void Run(object a, object b, object c)
  32. {
  33. this.param[0] = a;
  34. this.param[1] = b;
  35. this.param[2] = c;
  36. this.methodInfo.Invoke(this.obj, param);
  37. }
  38. }
  39. public class MonoStaticMethod : IStaticMethod
  40. {
  41. private readonly MethodInfo methodInfo;
  42. private readonly object[] param;
  43. public MonoStaticMethod(Type type, string methodName)
  44. {
  45. this.methodInfo = type.GetMethod(methodName);
  46. this.param = new object[this.methodInfo.GetParameters().Length];
  47. }
  48. public override void Run()
  49. {
  50. this.methodInfo.Invoke(null, param);
  51. }
  52. public override void Run(object a)
  53. {
  54. this.param[0] = a;
  55. this.methodInfo.Invoke(null, param);
  56. }
  57. public override void Run(object a, object b)
  58. {
  59. this.param[0] = a;
  60. this.param[1] = b;
  61. this.methodInfo.Invoke(null, param);
  62. }
  63. public override void Run(object a, object b, object c)
  64. {
  65. this.param[0] = a;
  66. this.param[1] = b;
  67. this.param[2] = c;
  68. this.methodInfo.Invoke(null, param);
  69. }
  70. }
  71. }