标签:cat 通过 耦合 develop dispose handler demo ble handle
反射指程序可以访问、检测和修改它本身状态或行为的一种能力。
程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。
您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
优点:
缺点:
假如我需要让代码自动识别并执行dll里面所有的方法,这个时候就可以用到c#反射;
1.先用c#写个简单的UI,效果图如下:
代码部分
//Form1.Designer.cs namespace BojayUI { partial class Form1 { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); this.buttonOpenProfile = new System.Windows.Forms.Button(); this.textBoxProfilePath = new System.Windows.Forms.TextBox(); this.labelProfilePath = new System.Windows.Forms.Label(); this.buttonClosePort = new System.Windows.Forms.Button(); this.buttonOpenPort = new System.Windows.Forms.Button(); this.tabPage2 = new System.Windows.Forms.TabPage(); this.button_start = new System.Windows.Forms.Button(); this.label_dll1scop = new System.Windows.Forms.Label(); this.label_dll1Data = new System.Windows.Forms.Label(); this.label_dll1Result = new System.Windows.Forms.Label(); this.label_dll1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.OpenProfileDialog = new System.Windows.Forms.OpenFileDialog(); this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); this.tabPage2.SuspendLayout(); this.SuspendLayout(); // // tabControl1 // this.tabControl1.Controls.Add(this.tabPage1); this.tabControl1.Controls.Add(this.tabPage2); this.tabControl1.Location = new System.Drawing.Point(12, 38); this.tabControl1.Name = "tabControl1"; this.tabControl1.SelectedIndex = 0; this.tabControl1.Size = new System.Drawing.Size(776, 386); this.tabControl1.TabIndex = 0; // // tabPage1 // this.tabPage1.Controls.Add(this.buttonOpenProfile); this.tabPage1.Controls.Add(this.textBoxProfilePath); this.tabPage1.Controls.Add(this.labelProfilePath); this.tabPage1.Controls.Add(this.buttonClosePort); this.tabPage1.Controls.Add(this.buttonOpenPort); this.tabPage1.Location = new System.Drawing.Point(4, 22); this.tabPage1.Name = "tabPage1"; this.tabPage1.Padding = new System.Windows.Forms.Padding(3); this.tabPage1.Size = new System.Drawing.Size(768, 360); this.tabPage1.TabIndex = 0; this.tabPage1.Text = "Setting"; this.tabPage1.UseVisualStyleBackColor = true; // // buttonOpenProfile // this.buttonOpenProfile.Enabled = false; this.buttonOpenProfile.Location = new System.Drawing.Point(662, 73); this.buttonOpenProfile.Name = "buttonOpenProfile"; this.buttonOpenProfile.Size = new System.Drawing.Size(100, 23); this.buttonOpenProfile.TabIndex = 4; this.buttonOpenProfile.Text = "OpenProfile"; this.buttonOpenProfile.UseVisualStyleBackColor = true; this.buttonOpenProfile.Click += new System.EventHandler(this.buttonOpenFile_Click); // // textBoxProfilePath // this.textBoxProfilePath.Location = new System.Drawing.Point(132, 76); this.textBoxProfilePath.Name = "textBoxProfilePath"; this.textBoxProfilePath.Size = new System.Drawing.Size(502, 21); this.textBoxProfilePath.TabIndex = 3; this.textBoxProfilePath.TextChanged += new System.EventHandler(this.textBoxProfilePath_TextChanged); // // labelProfilePath // this.labelProfilePath.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(192))))); this.labelProfilePath.Location = new System.Drawing.Point(6, 75); this.labelProfilePath.Name = "labelProfilePath"; this.labelProfilePath.Size = new System.Drawing.Size(100, 23); this.labelProfilePath.TabIndex = 2; this.labelProfilePath.Text = "ProfilePath"; this.labelProfilePath.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // buttonClosePort // this.buttonClosePort.Enabled = false; this.buttonClosePort.Location = new System.Drawing.Point(662, 6); this.buttonClosePort.Name = "buttonClosePort"; this.buttonClosePort.Size = new System.Drawing.Size(100, 23); this.buttonClosePort.TabIndex = 1; this.buttonClosePort.Text = "ClosePort"; this.buttonClosePort.UseVisualStyleBackColor = true; this.buttonClosePort.Click += new System.EventHandler(this.buttonClosePort_Click); // // buttonOpenPort // this.buttonOpenPort.Location = new System.Drawing.Point(6, 6); this.buttonOpenPort.Name = "buttonOpenPort"; this.buttonOpenPort.Size = new System.Drawing.Size(100, 23); this.buttonOpenPort.TabIndex = 0; this.buttonOpenPort.Text = "OpenPort"; this.buttonOpenPort.UseVisualStyleBackColor = true; this.buttonOpenPort.Click += new System.EventHandler(this.buttonOpenPort_Click); // // tabPage2 // this.tabPage2.Controls.Add(this.button_start); this.tabPage2.Controls.Add(this.label_dll1scop); this.tabPage2.Controls.Add(this.label_dll1Data); this.tabPage2.Controls.Add(this.label_dll1Result); this.tabPage2.Controls.Add(this.label_dll1); this.tabPage2.Location = new System.Drawing.Point(4, 22); this.tabPage2.Name = "tabPage2"; this.tabPage2.Padding = new System.Windows.Forms.Padding(3); this.tabPage2.Size = new System.Drawing.Size(768, 360); this.tabPage2.TabIndex = 1; this.tabPage2.Text = "Work"; this.tabPage2.UseVisualStyleBackColor = true; // // button_start // this.button_start.Location = new System.Drawing.Point(645, 273); this.button_start.Name = "button_start"; this.button_start.Size = new System.Drawing.Size(107, 73); this.button_start.TabIndex = 4; this.button_start.Text = "Start"; this.button_start.UseVisualStyleBackColor = true; this.button_start.Click += new System.EventHandler(this.button_start_Click); // // label_dll1scop // this.label_dll1scop.BackColor = System.Drawing.Color.Silver; this.label_dll1scop.Location = new System.Drawing.Point(514, 14); this.label_dll1scop.Name = "label_dll1scop"; this.label_dll1scop.Size = new System.Drawing.Size(238, 27); this.label_dll1scop.TabIndex = 3; this.label_dll1scop.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label_dll1Data // this.label_dll1Data.BackColor = System.Drawing.Color.Silver; this.label_dll1Data.Location = new System.Drawing.Point(326, 14); this.label_dll1Data.Name = "label_dll1Data"; this.label_dll1Data.Size = new System.Drawing.Size(182, 27); this.label_dll1Data.TabIndex = 2; this.label_dll1Data.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label_dll1Result // this.label_dll1Result.BackColor = System.Drawing.Color.Silver; this.label_dll1Result.Location = new System.Drawing.Point(242, 14); this.label_dll1Result.Name = "label_dll1Result"; this.label_dll1Result.Size = new System.Drawing.Size(78, 27); this.label_dll1Result.TabIndex = 1; this.label_dll1Result.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label_dll1 // this.label_dll1.BackColor = System.Drawing.Color.Silver; this.label_dll1.Location = new System.Drawing.Point(54, 14); this.label_dll1.Name = "label_dll1"; this.label_dll1.Size = new System.Drawing.Size(182, 27); this.label_dll1.TabIndex = 0; this.label_dll1.Text = "GetValue_FromDll1Text"; this.label_dll1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label1 // this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); this.label1.Location = new System.Drawing.Point(12, 13); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(776, 13); this.label1.TabIndex = 1; this.label1.Text = "Bojay Common UI V1.0"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label2 // this.label2.Location = new System.Drawing.Point(12, 426); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(776, 23); this.label2.TabIndex = 2; this.label2.Text = "Developed by Tony"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // OpenProfileDialog // this.OpenProfileDialog.FileName = "OpenProfileDialog"; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoValidate = System.Windows.Forms.AutoValidate.Disable; this.ClientSize = new System.Drawing.Size(800, 450); this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.Controls.Add(this.tabControl1); this.Name = "Form1"; this.Text = "DEMO_UI"; this.tabControl1.ResumeLayout(false); this.tabPage1.ResumeLayout(false); this.tabPage1.PerformLayout(); this.tabPage2.ResumeLayout(false); this.ResumeLayout(false); } #endregion private System.Windows.Forms.TabControl tabControl1; private System.Windows.Forms.TabPage tabPage1; private System.Windows.Forms.TabPage tabPage2; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button buttonOpenPort; private System.Windows.Forms.Button buttonClosePort; private System.Windows.Forms.Button buttonOpenProfile; private System.Windows.Forms.TextBox textBoxProfilePath; private System.Windows.Forms.Label labelProfilePath; private System.Windows.Forms.OpenFileDialog OpenProfileDialog; private System.Windows.Forms.Label label_dll1; private System.Windows.Forms.Label label_dll1scop; private System.Windows.Forms.Label label_dll1Data; private System.Windows.Forms.Label label_dll1Result; private System.Windows.Forms.Button button_start; } }
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace BojayUI { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
标签:cat 通过 耦合 develop dispose handler demo ble handle
原文地址:https://www.cnblogs.com/YangARTuan/p/10564203.html