C#获取一个类的泛型类型
时间: 2024-10-01 15:04:30 浏览: 38
在C#中,如果你有一个泛型类或方法,并想获取它的实际类型参数,你可以使用Type变量和Generics相关的属性。例如,如果你有一个泛型类`TClass<T>`,你可以这样做:
```csharp
public class TClass<T>
{
public Type MyGenericType { get; set; }
// 其他方法...
}
// 获取TClass<int>的实际类型参数
var instance = new TClass<int>();
Type actualType = instance.MyGenericType; // 这将得到System.Int32类型的实例
```
对于方法,你可以通过反射来获取参数的类型参数:
```csharp
public static void MethodWithGenericParameter<T>(T arg)
{
var methodInfo = typeof(MethodWithGenericParameter<>).GetMethod("MethodWithGenericParameter");
var genericArguments = methodInfo.GetGenericArguments(); // 这里会得到一个只包含一个元素的数组,元素类型为T
}
public static void MethodWithGenericParameter(object arg)
{
var typeArgument = arg.GetType().GetGenericArguments()[0]; // 如果传入的是匿名类型或非泛型类型,这里可能会抛异常
}
```
阅读全文