Form1.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Reflection;
  5. using System.Windows.Forms;
  6. using Waka.Lego.Commons;
  7. using Y.Utils.ReflectionUtils.AttributeUtils;
  8. using Y.Utils.ReflectionUtils.ReflectionCoreUtils;
  9. namespace Waka.Lego
  10. {
  11. public partial class Form1 : Form
  12. {
  13. string x = "123123123";
  14. [Control(Widget = "button1", Click = "DoShowMsg")]
  15. public Button ShowMsg;
  16. public Form1()
  17. {
  18. InitializeComponent();
  19. }
  20. private void Form1_Load(object sender, EventArgs e)
  21. {
  22. //DoTest();
  23. }
  24. [Conditional("DEBUG")]
  25. void DoTest()
  26. {
  27. AppDomain appDomain = DomainTool.CreateDomain(
  28. "SimpleReflectionDomain",
  29. @"I:\CoCo\GitHub\ShopSystem\ShopSystem\Waka.Lego\bin\Debug\Bin\Plugins\Waka.Lego.FileTool");
  30. SimpleReflection sr = DomainTool.CreateInstance<SimpleReflection>(appDomain);
  31. Form form = sr.Do<Form>(
  32. R.AppPath + @"Plugins\Waka.Lego.FileTool\Waka.Lego.FileTool.dll",
  33. "FileController",
  34. "FileList",
  35. new object[] { 100 },
  36. new object[] { R.AppPath + @"Plugins\Waka.Lego.FileTool" });
  37. form.Show();
  38. }
  39. void TestController(object[] values, string controller = "Controller", string method = "FileList")
  40. {
  41. string dllFile = @"I:\CoCo\GitHub\ShopSystem\ShopSystem\Waka.Lego.FileTool\bin\Debug\Waka.Lego.FileTool.dll";
  42. List<Type> controllers = new List<Type>();
  43. //var types = Assembly.GetExecutingAssembly().GetTypes();
  44. var types = Assembly.LoadFile(dllFile).GetTypes();
  45. foreach (var type in types)
  46. {
  47. if (type.FullName.Contains(controller))
  48. {
  49. controllers.Add(type);
  50. }
  51. }
  52. controllers.ForEach(x =>
  53. {
  54. object instance = x.Assembly.CreateInstance(x.FullName);
  55. MethodInfo methodInfo = x.GetMethod(method);
  56. ParameterInfo[] param = methodInfo.GetParameters();
  57. List<Type> paramType = new List<Type>();
  58. foreach (var item in param)
  59. {
  60. paramType.Add(item.ParameterType);
  61. }
  62. //执行方法
  63. object value = x.GetMethod(method, paramType.ToArray()).Invoke(instance, values);
  64. ((Form)value).Show();
  65. });
  66. }
  67. private void DoShowMsg(object sender, EventArgs e)
  68. {
  69. //this.button1.Click += new System.EventHandler(this.button1_Click_1);
  70. //((Button)sender).Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  71. string xx = x;
  72. string orgText = ShowMsg.Text;
  73. string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  74. ShowMsg.Text = date;
  75. }
  76. private void button2_Click(object sender, EventArgs e)
  77. {
  78. string orgText = ShowMsg.Text;
  79. string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  80. ShowMsg.Text = date;
  81. }
  82. private void button1_Click(object sender, EventArgs e)
  83. {
  84. }
  85. }
  86. }