写一个简单的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";
}
}
}

}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用C#的希尔排序代码,并附有中文注释: ```csharp using System; class ShellSort { static void Main(string[] args) { int[] arr = { 8, 3, 6, 4, 2, 9, 1, 5, 7 }; Console.WriteLine("排序前:"); foreach (int i in arr) { Console.Write(i + " "); } // 计算增量(步长)序列 int gap = arr.Length / 2; while (gap > 0) { // 对每个增量进行插入排序 for (int i = gap; i < arr.Length; i++) { int j = i; int temp = arr[j]; while (j >= gap && arr[j - gap] > temp) { arr[j] = arr[j - gap]; j -= gap; } arr[j] = temp; } gap /= 2; } Console.WriteLine("\n排序后:"); foreach (int i in arr) { Console.Write(i + " "); } } } ``` 注释说明: - `int[] arr = { 8, 3, 6, 4, 2, 9, 1, 5, 7 };`:定义待排序的数组。 - `int gap = arr.Length / 2;`:计算初始的增量(步长),使用希尔排序的经验值,即数组长度的一半。 - `while (gap > 0) {...}`:循环计算不同增量(步长)下的排序结果,直到增量(步长)为1。 - `for (int i = gap; i < arr.Length; i++) {...}`:对每个增量进行插入排序,从第gap个元素开始,以gap为间隔进行插入排序。 - `int j = i; int temp = arr[j];`:定义插入排序中的游标j和暂存当前元素的temp。 - `while (j >= gap && arr[j - gap] > temp) {...}`:插入排序过程中,将当前元素与已排好序的元素依次比较,找到正确的插入位置。 - `arr[j] = temp;`:将暂存的元素插入到正确的位置。 - `foreach (int i in arr) { Console.Write(i + " "); }`:输出排序后的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值