MonoMethod.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Reflection;
  3. namespace Model
  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.methodInfo.Invoke(this.obj, param);
  23. }
  24. public override void Run(object a, object b)
  25. {
  26. this.param[0] = a;
  27. this.param[1] = b;
  28. this.methodInfo.Invoke(this.obj, param);
  29. }
  30. public override void Run(object a, object b, object c)
  31. {
  32. this.param[0] = a;
  33. this.param[1] = b;
  34. this.param[2] = c;
  35. this.methodInfo.Invoke(this.obj, param);
  36. }
  37. }
  38. public class MonoStaticMethod : IStaticMethod
  39. {
  40. private readonly MethodInfo methodInfo;
  41. private readonly object[] param;
  42. public MonoStaticMethod(Type type, string methodName)
  43. {
  44. this.methodInfo = type.GetMethod(methodName);
  45. this.param = new object[this.methodInfo.GetParameters().Length];
  46. }
  47. public override void Run()
  48. {
  49. this.methodInfo.Invoke(null, param);
  50. }
  51. public override void Run(object a)
  52. {
  53. this.param[0] = a;
  54. this.methodInfo.Invoke(null, param);
  55. }
  56. public override void Run(object a, object b)
  57. {
  58. this.param[0] = a;
  59. this.param[1] = b;
  60. this.methodInfo.Invoke(null, param);
  61. }
  62. public override void Run(object a, object b, object c)
  63. {
  64. this.param[0] = a;
  65. this.param[1] = b;
  66. this.param[2] = c;
  67. this.methodInfo.Invoke(null, param);
  68. }
  69. }
  70. }