c#之System.Reflection.MethodBase

wisdomone1發表於2012-03-14
關於此類的官方連結:


測試程式碼如下:

實施

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace testconstructinternal
{
    public class Class1
    {
        public int name=3;
        public void Print(int vname)
        {
            name = vname;
            Console.WriteLine(Convert.ToString(name));

            //獲取當前正在執行方法的名稱(透過反射),必須要寫在正在執行方法的程式碼塊中,而不是其它的程式碼塊
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);//獲取當前正在執行方法的名稱
            //getparameters獲取當在執行方法的引數的相關資訊
            ParameterInfo[] pi=MethodBase.GetCurrentMethod().GetParameters();
            //i表示parameterinfo陣列中可能會儲存多個方法引數,每個方法引數會有多個不同的屬性,故用陣列及length迴圈
            for (int i = 0; i < pi.Length; i++)
            {
                Console.WriteLine(pi.GetType().Name);//方法引數的型別
                Console.WriteLine( pi.GetValue(i).ToString());//方法引數的名稱

            }
                Console.ReadKey();
            //AppDomain.CurrentDomain.BaseDirectory.
        }
    }
}


呼叫程式碼
using System;
using System.Reflection;//反射
using testconstructinternal;
public class FieldInfoClass
{
    public int myField1 = 0;
    protected string myField2 = null;//保護成員,class and subclass can access
    public  static void Gx()
    {
        ;
    }
    public static void Main() //static main method
    {
        //學習system.reflection.methodbase類的用法
        //methodbase 用於獲取方法及建構函式的資訊
        Class1 c1 = new Class1();
        c1.Print(34);
       
    }
}

小結:反射很複雜,要努力學習,以適應工作

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-718489/,如需轉載,請註明出處,否則將追究法律責任。