是的,System.Reflection 支持泛型操作。System.Reflection 提供了對類型、成員(包括字段、方法、屬性等)以及類型參數的詳細信息訪問和處理能力。通過反射,您可以獲取和操作泛型類型及其類型參數。
例如,要獲取一個泛型類型的類型參數,可以使用 Type.GetGenericTypeDefinition() 方法。下面是一個示例:
using System;
using System.Reflection;
class GenericClass<T> { }
class Program
{
static void Main()
{
Type genericType = typeof(GenericClass<int>);
Type genericTypeDefinition = genericType.GetGenericTypeDefinition();
Console.WriteLine("泛型類型的定義: " + genericTypeDefinition); // 輸出: GenericClass`1
}
}
在這個例子中,我們首先獲取了泛型類 GenericClass<int>
的類型對象。然后,我們使用 GetGenericTypeDefinition()
方法獲取了泛型類型的定義,即去掉類型參數后的類定義 GenericClass
。
類似地,您還可以使用反射來創建泛型類型的實例、訪問泛型類型成員的值等。但請注意,在使用反射操作泛型類型時,可能需要處理類型擦除的情況,因為運行時會將泛型類型參數替換為其限定類型(如 object
)或限定類型的限定類型(如 int
)。