簡體   English   中英

如何從C#的派生類中獲取基類的名稱

[英]How to get the name of the base class from a derived class in C#

我想使用反射從派生類中獲取基類的名稱。

Type type = typeof(Derived);
Type baseType = type.BaseType;
if(baseType != null) {
    string baseTypeName = baseType.Name;
    Console.WriteLine(baseTypeName);
}
else {
    Console.WriteLine("No base type.");
}

或者,如果您需要標准名稱,則可以使用Type.FullName

如果只想要簡單的名稱:

var name = typeof(DerivedType).BaseType.Name;

或者,如果您想要程序集限定名稱:

var name = typeof(DerivedType).BaseType.AssemblyQualifiedName;

如果您想要的代碼不會引發空引用異常:

var type = typeof(DerivedType);
var parentType = type.BaseType;

if(parentType != null)
{
    var name = parentType.Name;
    var assemblyQualifiedName = parentType.AssemblyQualifiedName;
}

BaseClassInstance.GetType().BaseType.FullName; 應該做到的

您可以這樣獲得:

    class BaseClass { }
    class DerivedClass : BaseClass { }

    [Test]
    public void TestBaseName()
    {
        var a = new DerivedClass();
        Assert.AreEqual(a.GetType().BaseType.Name, "BaseClass");
    }

我不確定您的問題是什么意思。 您已經獲得了一些答案,向您展示了如何從派生類型中獲取基本類型。

Type baseType = type.BaseType;

如果您具有基本類型的引用,則可以采用另一種方法,可以使用GetType獲取動態類型:

BaseClass foo = ....;
Type type = foo.GetType();

一些思考可能會產生魔力:

var type = this.GetType();
while(type.BaseType != typeof(object))
{
    type = type.BaseType;
}
Console.WriteLine(type.Name);
ChildClass cc = new ChildClass();
string baseNameClass = cc.GetType().BaseType.FullName;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM