System.Reflection如何獲取類型信息

小樊
81
2024-10-16 18:44:17

在.NET中,System.Reflection命名空間提供了豐富的類和方法,用于在運(yùn)行時(shí)檢查和操作類型、程序集、模塊、接口、成員等元數(shù)據(jù)信息。要獲取類型信息,你可以使用Type類。以下是一些常見的方法來(lái)獲取類型信息:

  1. 使用typeof操作符typeof操作符用于獲取指定類型的Type對(duì)象。例如,要獲取int類型的Type對(duì)象,你可以這樣做:
Type intType = typeof(int);
  1. 使用typeof操作符獲取泛型類型: 如果你有一個(gè)泛型類型,你可以使用typeof操作符并傳遞類型參數(shù)來(lái)獲取其Type對(duì)象。例如,要獲取List<int>類型的Type對(duì)象,你可以這樣做:
Type listIntType = typeof(List<int>);
  1. 使用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)字段等。

0