程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#反射 入門學習 01

C#反射 入門學習 01

編輯:C#入門知識

 

前言

                                                  獲取方法的相關信息的兩種形式

 

反射是一種允許用戶獲得類信息的C#功能,Type對象映射它代表的底層對象;

在.Net 中, 一旦獲得了Type對象,就可以使用GetMethods()方法獲取此類型支持的方法列表;該方法的兩種形式:

MethodInfo [] GetMethods()

MethodInfo [] GetMethods(BindingFlags bindingflas)  :它的參數帶有一些限制 BindingFlags  是一個枚舉

枚舉成員 [Instance ,Public

 

ParameterInfo[]  GetParameters() 方法返回一個方法的參數列表

 

下面用到的類 MyClass ,為了方便閱讀,我把它折疊了!

MyClass

 

 

Main:

  Type t = (MyClass);
             Console.WriteLine( +             Console.WriteLine(             Console.WriteLine(              第一種形式
                                                    
             
              第二種形式
             MethodInfo[] mi = t.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance |             
              (MethodInfo m                   
                 Console.Write(   + m.ReturnType.Name +    + m.Name + );
                 ParameterInfo[] pi = m.GetParameters();
                  ( i = ; i < pi.Length; i++                      Console.Write(pi[i].ParameterType.Name +     + pi[i].Name);
                      (i+<                          Console.Write(                    
                  Console.WriteLine(          
  
             Console.ReadKey();

 

 

 

       

                                                             使用反射調用方法

 

上面 討論了怎麼獲取一個類型所支持的方法,然而為我們獲取對方法的調用做了充分的准備!

MethodInfo類中的Invoke() 方法提供了該技能!

它的一種形式:  object Invoke(object  obj,object [] paramenters)

            obj 是一個對象引用,將調用它所指向的對象上的方法,對於static方法,obj必須為null。

            所有需要傳遞給方法的參數都必須在parameters數組中指定。如果方法不需要參數,則paramenters必須為null

            基類MethodBase的 Invoke()方法返回被調用方法的返回值 

            請看下面的事例:

 

MyClass類Set()方法有所改變:

 

    Set( a,               Console.WriteLine(             x =             y =             Set( a,               Console.WriteLine(             x = (             y = (          }

 

Main

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved