[英]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.