【发布时间】:2013-08-07 08:44:58
【问题描述】:
我有一个从中派生的通用抽象类:
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 语句应该是什么样子的呢?
【问题讨论】:
-
我很好奇为什么你想在运行时知道这个。您能否详细说明一下以满足我的好奇心?
-
我有一个处理多种类型对象的方法。它们都有一个共同的抽象类,在我的示例中 SuperClass
派生自该抽象类。因此,我需要在运行时以相同的方式处理从 SuperClass 派生的所有对象。如果可能,我不想对每种具体类型进行单独处理。
标签: c# generics inheritance types