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