在C#中,GetType()
方法用于獲取一個對象的類型信息。但是,對于泛型類型,GetType()
方法返回的類型是System.Type
,而不是具體的泛型類型。要獲取泛型類型的信息,你需要檢查Type
對象的屬性。
以下是一些你可以使用的方法來獲取泛型類型信息:
IsGenericType
屬性檢查類型是否為泛型類型。Type type = GetType();
if (type.IsGenericType)
{
Console.WriteLine("This is a generic type.");
}
else
{
Console.WriteLine("This is not a generic type.");
}
GetGenericTypeDefinition()
方法獲取泛型類型的定義(即去掉類型參數的類型)。Type type = GetType();
if (type.IsGenericType)
{
Type genericTypeDefinition = type.GetGenericTypeDefinition();
Console.WriteLine($"Generic type definition: {genericTypeDefinition}");
}
else
{
Console.WriteLine("This is not a generic type.");
}
GetGenericArguments()
方法獲取泛型類型的參數(即具體的類型)。Type type = GetType();
if (type.IsGenericType)
{
Type[] genericArguments = type.GetGenericArguments();
Console.WriteLine("Generic arguments:");
foreach (Type argument in genericArguments)
{
Console.WriteLine($" - {argument}");
}
}
else
{
Console.WriteLine("This is not a generic type.");
}
請注意,這些方法僅適用于泛型類型。對于非泛型類型,GetType()
方法將返回實際類型。