在.NET中,System.Reflection
命名空間提供了豐富的類和方法,用于在運(yùn)行時(shí)檢查和操作類型、程序集、模塊、接口、成員等元數(shù)據(jù)信息。要獲取類型信息,你可以使用Type
類。以下是一些常見的方法來(lái)獲取類型信息:
typeof
操作符:
typeof
操作符用于獲取指定類型的Type
對(duì)象。例如,要獲取int
類型的Type
對(duì)象,你可以這樣做:Type intType = typeof(int);
typeof
操作符獲取泛型類型:
如果你有一個(gè)泛型類型,你可以使用typeof
操作符并傳遞類型參數(shù)來(lái)獲取其Type
對(duì)象。例如,要獲取List<int>
類型的Type
對(duì)象,你可以這樣做:Type listIntType = typeof(List<int>);
Type.GetType
方法:
Type.GetType
方法用于根據(jù)指定的全名獲取類型的Type
對(duì)象。全名包括命名空間和類型名稱。例如,要獲取System.Collections.Generic.List<int>
類型的Type
對(duì)象,你可以這樣做:Type listIntType = Type.GetType("System.Collections.Generic.List`1[System.Int32]");
注意:如果找不到指定的類型,GetType
方法將返回null
。
4. 使用Assembly.GetType
方法:
Assembly.GetType
方法用于根據(jù)指定的程序集和類型名稱獲取類型的Type
對(duì)象。例如,要獲取當(dāng)前程序集中MyNamespace.MyClass
類型的Type
對(duì)象,你可以這樣做:
Type myClassType = Assembly.GetExecutingAssembly().GetType("MyNamespace.MyClass");
注意:如果找不到指定的類型,GetType
方法將返回null
。
5. 使用assembly.DefinedTypes
屬性:
你還可以通過(guò)訪問(wèn)程序集的DefinedTypes
屬性來(lái)獲取程序集中定義的所有類型的列表。然后,你可以遍歷這個(gè)列表來(lái)查找你感興趣的類型。例如:
Assembly assembly = Assembly.GetExecutingAssembly();
foreach (Type type in assembly.DefinedTypes)
{
Console.WriteLine(type.FullName);
}
這些方法可以幫助你獲取類型的詳細(xì)信息,如名稱、基類、接口、字段、方法等。你可以使用這些信息來(lái)在運(yùn)行時(shí)動(dòng)態(tài)地創(chuàng)建對(duì)象、調(diào)用方法或訪問(wèn)字段等。