假设我有一个对象,那么我怎么知道该对象是否派生自特定的泛型类。例如:
public class GenericClass<T>
{
}
public bool IsDeriveFrom(object o)
{
return o.GetType().IsSubclassOf(typeof(GenericClass)); //will throw exception here
}
请注意,上面的代码将引发异常。无法直接检索通用类的类型,因为没有提供类型参数的通用类没有类型。
最佳答案
您应该执行以下操作:
public class GenericClass<T>
{
}
public class GenericClassInherited<T> : GenericClass<T>
{
}
public static bool IsDeriveFrom(object o)
{
return o.GetType().BaseType.GetGenericTypeDefinition() == typeof(GenericClass<>);
}
例子:
static void Main(string[] args)
{
var generic = new GenericClassInherited<int>();
var isTrue = IsDeriveFrom(generic);
}
关于c# - 我怎么知道对象是否派生自特定的泛型类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4561380/