官方文檔:https://msdn.microsoft.com/zh-cn/library/system.type%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
C#中通過Type類可以訪問任意數據類型信息。
system.Type類以前把Type看作一個類,但它實際上是一個抽象的基類。
只要實例化了一個Type對象,實際上就實例化了Typc的一個派生類。
盡管一般情況下派生類只提供各種Type方法和屬性的不同重載,但是這些方法和屬性返回對應數據類型的正確數據,Type有與每種數據類型對應的派生類。
Type是許多反射功能的入口 。注意,可用的屬性都是只讀的:可以使用Type確定數據的類型,但不能使用它修改該類型
1.獲取Type
有3種方式:
a.使用typeof運算符,如Type t = typeof(int);
b.使用GetType()方法,如int i;Type t = i.GetType();
c.使用Type類的靜態方法GetType(),如Type t =Type.GetType("System.Double");
2.Type的屬性:
Name:數據類型名;
FullName:數據類型的完全限定名,包括命名空間;
Namespace:數據類型的命名空間;
BaseType:直接基本類型;
UnderlyingSystemType:映射類型;
3.Type的方法:
GetMethod():返回一個方法的信息;
GetMethods():返回所有方法的信息。
GetMember()和GetMembers()方法返回數據類型的任何成員或所有成員的詳細信息,不管這些成員是構造函數、屬性和方法等。
public static void Main() { //基本數據類型 Type intType = typeof(int); //屬性 Console.WriteLine("intType.Name = " + intType.Name); Console.WriteLine("intType.FullName = " + intType.FullName); Console.WriteLine("intType.Namespace = " + intType.Namespace); Console.WriteLine("intType.IsAbstract = " + intType.IsAbstract); Console.WriteLine("intType.IsClass = " + intType.IsClass); Console.WriteLine("intType.IsEnum = " + intType.IsEnum); Console.WriteLine("intType.IsPrimitive = " + intType.IsPrimitive); Console.WriteLine("intType.IsValueType = " + intType.IsValueType); //方法 MethodInfo[] methods = intType.GetMethods(); foreach (MethodInfo method in methods) { Console.WriteLine(method.DeclaringType + " " + method.MemberType + " " + method.Name); } }
參考文檔:
https://www.cnblogs.com/kingdom_0/articles/2040855.html
http://www.knowsky.com/604653.html