我有一个通用的抽象类,我派生自:
abstract class SuperClass<T> where T : SuperDataClass abstract class SuperDataClass
数据类型仅限于SuperDataClass,因此每个具体数据类型都必须从SuperDataClass继承.
最后我有一对SuperClass和SuperDataClass继承者,例如:
class DataClassA : SuperDataClass class ClassA : SuperClass<DataClassA> class DataClassB : SuperDataClass class ClassB : SuperClass<DataClassB>
如何检查对象是否存在,例如ClassA是否从SuperClass继承而不知道可能的数据类型?
我尝试了以下,但不起作用:
if (testObject.GetType().IsAssignableFrom(typeof(SuperClass<SuperDataClass>))) { Console.WriteLine("The test object inherits from SuperClass"); }
那么if语句需要怎么样?
解决方法
递归
Type type2 = type; // type is your type,like typeof(ClassA) while (type2 != null) { if (type2.IsGenericType && type2.GetGenericTypeDefinition() == typeof(SuperClass<>)) { // found } type2 = type2.BaseType; }
请注意,如果您正在寻找接口,这将不起作用!