反射基础

 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 

你可能感兴趣的:(反射)