在.NET中 使用GetType函数返回对象的具体类类型。问题是我不知道类型将在运行时之前是什么类型,但我知道它派生的是哪个抽象类(我使用抽象工厂来创建适当的类)。
我如何获得实际的抽象类类型?它甚至可能吗?
答案 0 :(得分:12)
Type.BaseType
将告诉您当前类型派生的类型。您可以递归调用Type.BaseType
,直到Type.IsAbstract
为true
。
static class TypeExtensions {
public static Type GetFirstAbstractBaseType(this Type type) {
if (type == null) {
throw new ArgumentNullException("type");
}
Type baseType = type.BaseType;
if (baseType == null || baseType.IsAbstract) {
return baseType;
}
return baseType.GetFirstAbstractBaseType();
}
用法:
Type abstractBase = typeof(Derived).GetFirstAbstractBaseType();
答案 1 :(得分:0)
我认为您正在寻找Type类的BaseType属性。这将获取当前类型直接继承的类型。