1. 程式人生 > >【C#反射-Type類】

【C#反射-Type類】

一.反射的作用:

檢視和遍歷型別和型別的元資料;動態建立型別例項,動態的呼叫所建立的例項方法和欄位,屬性,遲繫結方法和屬性。

二.獲取Type物件例項:

反射的核心類-Type,封裝了關於型別的元資料,是進行反射的入口。當獲得了型別的Type物件後,可以根據Type提供的書信和方法獲得這個型別的一切資訊,包括欄位,屬性,事件,引數,建構函式等。

        static void Main(string[] args)
        {
            //1.使用Type類提供的靜態方法GetType()
            Type t = Type.GetType("System.IO.Stream");
            Console.WriteLine(t.ToString());

            //2.使用typeof操作符
            Type t1 = typeof(System.IO.Stream);
            Console.WriteLine(t1);

            //3.通過型別例項獲得Type物件
            string name = "字串型別";
            Type t2 = name.GetType();
            Console.WriteLine(t2);
            
            //新建一個測試專案類庫,命名Testdll,新增到專案引
            Class1 c1 = new Class1();
            Type t3 = c1.GetType();
            Console.WriteLine(c1);
        }

三.Type型別和System.Reflection名稱空間組織及結構。

在上述程式碼中新增一下程式碼:

            Console.WriteLine(t3.Name);     //當前成員名稱
            Console.WriteLine(t3.FullName); //型別全名
            Console.WriteLine(t3.Namespace);//獲取名稱空間
            Console.WriteLine(t3.BaseType); //在.NET中對映型別的引用
            Console.WriteLine(t3.Attributes);//獲取與 System.Type 關聯的屬性。
            //......
Type提供了用於獲取型別的基本資訊。如:當前物件型別,名稱空間,物件和名稱空間全名,是否公開等...可以F12到Type中檢視。