1. 程式人生 > >c#中的Type類

c#中的Type類

     Type類,用來包含型別的特性。對於程式中的每一個型別,都會有一個包含這個型別的資訊的Type類的物件,型別資訊包含資料,屬性和方法等資訊。

1.生成Type物件

      有兩種方法可以生成Type類的物件:一種是Typeof(類名),一種是物件呼叫GetType()函式。

 Type type = typeof(Person);

 Person person = new Person();
 Type type2 = person.GetType();

2.獲取類的資訊

//類的名稱    
string name = type.Name;           
//類的名稱空間
string space = type.Namespace;
//類的程式集
Assembly assembly = type.Assembly;
//類的共有欄位
FieldInfo[] fieldInfos = type.GetFields();
//類的屬性
PropertyInfo[] propertyInfos = type.GetProperties();
//類的方法
MethodInfo[] methodInfos = type.GetMethods();

3.程式碼例項

using System;
using System.Reflection;

namespace ConsoleApp2
{
    public class Person
    {
        public int Id;
        public string Name;
        public int Age { get; set; }
        public string Department { get; set; }

        public void Print()
        {
            string str = string.Format("{0} {1} {2} {3}", Id, Name, Age, Department);
            Console.WriteLine(str);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person();
            Type type = person.GetType();
            
            //類的名稱
            Console.WriteLine("類的名稱: " + type.Name);     
            //類的名稱空間
            Console.WriteLine("類的名稱空間: " + type.Namespace);

            //類的共有欄位
            Console.Write("類的共有欄位: ");
            FieldInfo[] fieldInfos = type.GetFields();
            foreach (FieldInfo info in fieldInfos)
            {
                Console.Write(info.Name + " ");
            }
            Console.WriteLine();

            //類的屬性
            Console.Write("類的屬性: ");
            PropertyInfo[] propertyInfos = type.GetProperties();
            foreach (PropertyInfo info in propertyInfos)
            {
                Console.Write(info.Name + " ");
            }
            Console.WriteLine();

            //類的方法
            Console.Write("類的方法: ");
            MethodInfo[] methodInfos = type.GetMethods();
            foreach (MethodInfo info in methodInfos)
            {
                Console.Write(info.Name + " ");
            }
            Console.WriteLine();

            //類的程式集
            Assembly assembly = type.Assembly;
            Console.WriteLine("類的程式集: " + assembly.FullName);

            //當前程式集下所有的型別
            Console.Write("當前程式集下所有的型別: ");
            Type[] types = assembly.GetTypes();
            foreach (Type item in types)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            Console.ReadKey();
        }
    }
}

執行結果