如何从基类中找到子类名称?


70

run-time内部base class,如何找到当前子类的名称?


“当前子类名称”是什么意思?
BoltClock

是的,许多孩子都继承了,base class而我希望当前使用的是base class
Xaqron

如果您想知道实际的课程,可以使用is运算符,例如if (this is BaseClass1) { some code here }
Shadow Wizard正在对

@Xaq您在Austin名称中有错字,他不会收到通知。.您只能使用@Aus来减少此类错字的机会。:)
影子巫师正在给

@奥斯汀:考虑将很多工作封装在单个基类中以减少冗余,那么当我要在基类中记录某些内容时,该怎么做?
Xaqron 2011年

Answers:


119

获取当前对象的类型,然后获取其名称。

this.GetType().Name

7
对于基类,您可以使用:this.GetType().BaseType.Name
Michi-2142

2
对于部分类似乎不起作用。您将在类名之后添加一个GUID类型号。
alikuli

11

尝试这个:

Type type = this.GetType().UnderlyingSystemType;  
String className = type.Name;  

此链接上的详细示例:

http://blogs.markglibres.com/2010/11/c-retrieve-class-name-of-child.html


7
欢迎使用Stack Overflow!感谢您发布答案!请务必仔细阅读有关自我促销常见问题解答。还请注意,每次链接到您自己的站点/产品,您都必须发布免责声明。
Andrew Barber

6
感谢安德鲁让我知道。:)我的博客站点不过是我的个人笔记,因为我倾向于忘记一些事情。甚至不担心有人会查看或评论它。将注意规则。非常感谢!:)
markg 2012年

9

如果调用this.GetType(),则无论您继承的基类如何,都始终获得当前的运行时类型。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.