C#获取某个对象的泛型类型以及泛型参数
时间: 2024-10-01 18:04:34 浏览: 59
.NET/C#如何判断某个类是否是泛型类型或泛型接口的子类型详解
在C#中,获取某个对象的泛型类型及其参数通常需要通过反射(Reflection)来完成。`Type.GetGenericArguments()`方法可以用于获取类型参数,而`typeof(T).GetGenericTypeDefinition()`可以获取包含泛型类型的基类或接口。
下面是一个简单的示例:
```csharp
// 假设有一个泛型类或方法 T<U>
Type genericType = typeof(MyClass<>); // MyClass<T> 或 MyMethod<>
// 获取泛型类型参数
Type[] typeParameters = genericType.GenericTypeParameters;
foreach (Type typeParam in typeParameters)
{
Console.WriteLine($"Type parameter: {typeParam.Name}");
}
// 如果是方法,也可以这样获取:
MethodBase method = SomeMethod();
if (method.IsGenericMethod)
{
Type[] methodTypeParameters = method.GetGenericMethodDefinition().GetTypeArguments();
foreach (Type methodTypeParam in methodTypeParameters)
{
Console.WriteLine($"Method type parameter: {methodTypeParam.Name}");
}
}
```
阅读全文