获取类派生的抽象类类型

时间:2010-02-01 17:56:00

标签: .net abstract-class gettype

在.NET中 使用GetType函数返回对象的具体类类型。问题是我不知道类型将在运行时之前是什么类型,但我知道它派生的是哪个抽象类(我使用抽象工厂来创建适当的类)。

我如何获得实际的抽象类类型?它甚至可能吗?

2 个答案:

答案 0 :(得分:12)

Type.BaseType将告诉您当前类型派生的类型。您可以递归调用Type.BaseType,直到Type.IsAbstracttrue

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属性。这将获取当前类型直接继承的类型。