前端之家收集整理的这篇文章主要介绍了
c# – 如何获取基类的泛型参数?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有三个类如下:
public class TestEntity { }
public class BaseClass<TEntity> { }
public class DerivedClass : BaseClass<TestEntity> { }
我已经在运行时使用反射获取DerivedClass的System.Type对象.如何使用反射获取TestEntity的System.Type对象?
谢谢.
我假设你的
代码只是一个示例,你不明确地知道DerivedClass.
var type = GetSomeType();
var innerType = type.BaseType.GetGenericArguments()[0];
请注意,此代码在运行时可能会非常容易失败,您应该验证您处理的类型是您期望的类型:
if(type.BaseType.IsGenericType
&& type.BaseType.GetGenericTypeDefinition() == typeof(BaseClass<>))
也可以有更深的继承树,因此需要一些具有上述条件的循环.
原文链接:https://www.f2er.com/csharp/95121.html