`
ihuashao
  • 浏览: 4544668 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

写一个简单的C#反射的例子(附有源码)

阅读更多

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Reflection;
using System.IO;

namespace WindowsApplication4
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private FileInfo fileInfo = null;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.OpenFileDialog OpenFileDialog;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.RichTextBox rtbMethods;
private System.Windows.Forms.RichTextBox rtbPro;
private System.Windows.Forms.RichTextBox rtbEvents;
private System.Windows.Forms.Button button4;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.OpenFileDialog = new System.Windows.Forms.OpenFileDialog();
this.textBox1 = new System.Windows.Forms.TextBox();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.rtbMethods = new System.Windows.Forms.RichTextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.rtbPro = new System.Windows.Forms.RichTextBox();
this.label3 = new System.Windows.Forms.Label();
this.rtbEvents = new System.Windows.Forms.RichTextBox();
this.button4 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(336, 8);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(64, 24);
this.button1.TabIndex = 0;
this.button1.Text = "brownse";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(8, 8);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(320, 21);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "textBox1";
//
// button2
//
this.button2.Location = new System.Drawing.Point(624, 8);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(136, 24);
this.button2.TabIndex = 2;
this.button2.Text = "invokeDesMethods";
//
// button3
//
this.button3.Location = new System.Drawing.Point(16, 312);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(144, 24);
this.button3.TabIndex = 3;
this.button3.Text = "invoke";
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// rtbMethods
//
this.rtbMethods.Location = new System.Drawing.Point(8, 56);
this.rtbMethods.Name = "rtbMethods";
this.rtbMethods.Size = new System.Drawing.Size(744, 72);
this.rtbMethods.TabIndex = 4;
this.rtbMethods.Text = "";
//
// label1
//
this.label1.Location = new System.Drawing.Point(8, 40);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(96, 16);
this.label1.TabIndex = 5;
this.label1.Text = "methods";
//
// label2
//
this.label2.Location = new System.Drawing.Point(8, 128);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(96, 16);
this.label2.TabIndex = 7;
this.label2.Text = "propertys";
//
// rtbPro
//
this.rtbPro.Location = new System.Drawing.Point(12, 144);
this.rtbPro.Name = "rtbPro";
this.rtbPro.Size = new System.Drawing.Size(744, 72);
this.rtbPro.TabIndex = 6;
this.rtbPro.Text = "";
//
// label3
//
this.label3.Location = new System.Drawing.Point(16, 216);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(96, 16);
this.label3.TabIndex = 9;
this.label3.Text = "events";
//
// rtbEvents
//
this.rtbEvents.Location = new System.Drawing.Point(16, 232);
this.rtbEvents.Name = "rtbEvents";
this.rtbEvents.Size = new System.Drawing.Size(744, 72);
this.rtbEvents.TabIndex = 8;
this.rtbEvents.Text = "";
//
// button4
//
this.button4.Location = new System.Drawing.Point(168, 312);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(144, 24);
this.button4.TabIndex = 10;
this.button4.Text = "clear";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(768, 358);
this.Controls.Add(this.button4);
this.Controls.Add(this.label3);
this.Controls.Add(this.rtbEvents);
this.Controls.Add(this.label2);
this.Controls.Add(this.rtbPro);
this.Controls.Add(this.label1);
this.Controls.Add(this.rtbMethods);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
if ( OpenFileDialog.ShowDialog() == DialogResult.OK )
{
this.fileInfo = new FileInfo( OpenFileDialog.FileName );
this.textBox1.Text = this.fileInfo.FullName ;
}
}

private void button3_Click(object sender, System.EventArgs e)
{
//获取文件信息
Assembly dll = Assembly.LoadFrom( OpenFileDialog.FileName );
foreach ( Type type in dll.GetTypes() )
{
//methods
foreach(MethodInfo objMethod in type.GetMethods())
{
this.rtbMethods.Text+=type.Name+":"+objMethod.Name.ToString()+"\r\n";
}
foreach(PropertyInfo objPropertyInfo in type.GetProperties())
{
this.rtbMethods.Text+=type.Name+":"+objPropertyInfo.Name.ToString()+"\r\n";
}
foreach(EventInfo objEventInfo in type.GetEvents())
{
this.rtbEvents.Text+=type.Name+":"+objEventInfo.Name.ToString()+"\r\n";
}
}
}

}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics