在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
答案 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);
}
}
}