1 private void button2_Click(object sender, System.EventArgs e)
 2 {
 3 Assembly a = Assembly.LoadFile(@"C:\Reflection\Demo\bin\Debug\ReflectionDLL.dll");
 4 Type t = a.GetType("ReflectionDLL.myObjects");
 5 //创建实体
 6 
 7 Object obj = Activator.CreateInstance(t); 
 8 
 9 //反射调用事件 
10 
11 EventInfo ei = t.GetEvent("Changed");
12 ei.AddEventHandler(obj,new ReflectionDLL.myObjects.MethodAEventHandler(obj_Changed)); 
13 
14 //调用方法MethodA 
15 
16 MethodInfo mi = t.GetMethod("MethodA"); 
17 mi.Invoke(obj,new object[]{"id"});
18 
19 //调用方法B
20 mi = t.GetMethod("MethodB");
21 DataSet ds = (DataSet)mi.Invoke(obj,null);
22 dataGrid1.DataSource = ds.Tables[0];
23 }

基本类

 1 namespace ReflectionDLL
 2 {
 3 /// <summary>
 4 /// myObjects 的摘要说明。
 5 /// </summary>
 6 public class myObjects
 7 {
 8 private string id;
 9 public string Id
10 {
11 get { return id; }
12 set { id = value; }
13 }
14 public delegate void MethodAEventHandler(object sender, int i);
15 public event MethodAEventHandler Changed;
16 private DataSet CreateTable()
17 {
18 System.Data.DataTable myDataTable = new DataTable("ParentTable");
19 DataColumn myDataColumn;
20 DataRow myDataRow;
21 // Create new DataColumn, set DataType, ColumnName and add to DataTable.
22 myDataColumn = new DataColumn();
23 myDataColumn.DataType = System.Type.GetType("System.Int32");
24 myDataColumn.ColumnName = "id"
25 myDataColumn.ReadOnly = true;
26 myDataColumn.Unique = true;
27 // Add the Column to the DataColumnCollection.
28 myDataTable.Columns.Add(myDataColumn); 
29 
30 // Create second column.
31 myDataColumn = new DataColumn();
32 myDataColumn.DataType = System.Type.GetType("System.String");
33 myDataColumn.ColumnName = "ParentItem"
34 myDataColumn.AutoIncrement = false;
35 myDataColumn.Caption = "ParentItem"
36 myDataColumn.ReadOnly = false;
37 myDataColumn.Unique = false;
38 // Add the column to the table.
39 myDataTable.Columns.Add(myDataColumn); 
40 
41 // Make the ID column the primary key column.
42 DataColumn[] PrimaryKeyColumns = new DataColumn[1];
43 PrimaryKeyColumns[0= myDataTable.Columns["id"];
44 myDataTable.PrimaryKey = PrimaryKeyColumns; 
45 
46 // Instantiate the DataSet variable.
47 DataSet myDataSet = new DataSet();
48 // Add the new DataTable to the DataSet.
49 myDataSet.Tables.Add(myDataTable); 
50 
51 // Create three new DataRow objects and add them to the DataTable
52 for (int i = 0; i<= 2; i++)
53 {
54 myDataRow = myDataTable.NewRow();
55 myDataRow["id"= i;
56 myDataRow["ParentItem"= "ParentItem " + i;
57 myDataTable.Rows.Add(myDataRow);
58 
59 
60 return myDataSet;
61 
62 
63 private void OnChange( int i )
64 {
65 if (Changed != null) Changed(this,i);
66 
67 
68 public myObjects()
69 
70 
71 }
72 public myObjects(string id)
73 {
74 
75 
76 public void MethodA(string id)
77 {
78 for (int i=0;i<100;i++)
79 {
80 OnChange(i);
81 }
82 }
83 public DataSet MethodB()
84 {
85 return CreateTable();
86 }
87 }
88 
89 
posted on 2006-12-20 16:43  *小小黄*  阅读(215)  评论(0编辑  收藏  举报