c#中的Type類
阿新 • • 發佈:2018-12-26
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(); } } }