Wie finde ich den Namen der untergeordneten Klasse aus der Basisklasse?

70

Bei run-timeInnern base class, wie die aktuellen Kind Klassennamen zu finden?

Xaqron
quelle
Was bedeutet "aktueller Name der Kinderklasse"?
BoltClock
Ja, viele Kinder erben das base classund ich möchte den Strom, der das verwendetbase class
Xaqron
Wenn Sie die tatsächliche Klasse wissen möchten, können Sie den isOperator verwenden, z. B.if (this is BaseClass1) { some code here }
Schatten-Assistent
@Xaq Sie haben Tippfehler im Namen von Austin, er wird nicht benachrichtigt. Sie können nur @Aus haben, um die Wahrscheinlichkeit für einen solchen Tippfehler zu verringern. :)
Shadow Wizard
@Austin: Betrachten Sie eine Menge Arbeit in einer einzelnen Basisklasse, um die Redundanz zu verringern. Wenn ich dann etwas in der Basisklasse anmelde, wie geht das?
Xaqron

Antworten:

119

Rufen Sie den Typ des aktuellen Objekts und dann seinen Namen ab.

this.GetType().Name
Tvanfosson
quelle
7
Für die Basisklasse können Sie verwenden:this.GetType().BaseType.Name
Michi-2142
2
Es scheint nicht für Teilklassen zu funktionieren. Nach dem Namen der Klasse wird eine GUID-Typennummer hinzugefügt.
Alikuli
11

Versuche dies:

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

Detailliertes Beispiel zu diesem Link:

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

markg
quelle
7
Willkommen bei Stack Overflow! Vielen Dank für Ihre Antwort! Bitte lesen Sie die FAQ zur Eigenwerbung sorgfältig durch. Beachten Sie auch , dass Sie jedes Mal, wenn Sie auf Ihre eigene Website / Ihr eigenes Produkt verlinken, einen Haftungsausschluss veröffentlichen müssen.
Andrew Barber
6
Danke Andrew, dass du mich informiert hast. :) Meine Blog-Site ist jedoch nur meine persönliche Notiz, da ich dazu neige, Dinge zu vergessen. Nichts über Werbung oder das Erhalten von Benutzerhits. Ich mache mir nicht einmal Sorgen, ob jemand es sehen oder kommentieren würde. wird die Regeln zur Kenntnis nehmen. Danke vielmals! :)
Markg
9

Wenn Sie aufrufen, erhalten this.GetType()Sie unabhängig von der Basisklasse, von der Sie erben, immer den aktuellen Laufzeittyp.

BKostenlos
quelle