获取继承对象的类类型?

时间:2017-07-05 08:32:21

标签: c# types

在C#中,如何获取对象的继承类类型,其中对象是继承对象而不是实例化对象的类型?

以下是一些代码:

public class ClassA
{
    public virtual void GetClassType()
    {
        var type = this.GetType();
        Console.WriteLine(type.Name);
    }
}
public class ClassB : ClassA
{
    public override void GetClassType()
    {
        base.GetClassType();
        var type = this.GetType();
        Console.WriteLine(type.Name);
    }
}
public class ClassC : ClassB
{
    public override void GetClassType()
    {
        base.GetClassType();
        var type = this.GetType();
        Console.WriteLine(type.Name);
    }
}

private void GetClassType()
{
    var objectA = new ClassC();
    objectA.GetClassType();
}

GetClassType方法将以下内容输出到控制台:

  

ClassC   ClassC   ClassC

是否可以获取类的类型而不是对象的类型,以便以下是控制台输出?

  

ClassA的   ClassB的   ClassC

3 个答案:

答案 0 :(得分:1)

如果你有类似的东西

class A {}

class B : A {}

你可以这样做:

var b = new B();
var baseType = b.GetType().BaseType;

答案 1 :(得分:0)

如果你得到了继承基类型的类,你就已经知道它继承了哪个类。

如果你想检查你可以做如下。

if(object is BaseType)
{
 //Dostuff
}

答案 2 :(得分:0)

using System;

class MyClass
{
}

class MyClass2: MyClass
{
}
namespace Appl
{
   class Program
   {
      static void Main(string[] args)
      {
         System.Console.WriteLine(typeof(MyClass2).BaseType.Name);
      }
   }
}