Liefert den Namen einer Klasse als String in C #

c# entity-framework

Frage

Gibt es eine Möglichkeit, einen Klassennamen in C # in einen String zu konvertieren?

Als Teil von Entity Framework enthält die .Include-Methode eine durch Punkte getrennte Liste von Zeichenfolgen, die beim Ausführen einer Abfrage verbunden werden. Ich habe das Klassenmodell dessen, was ich beitreten möchte, und aus Gründen des Refactorings und der zukünftigen Codewartung möchte ich beim Verweisen auf diese Klasse Kompilierungszeitsicherheit haben.

Gibt es einen Weg, wie ich das tun könnte:

class Foo
{
}

tblBar.Include ( Foo.GetType().ToString() );

Ich glaube nicht, dass ich GetType () ohne Instanz ausführen kann. Irgendwelche Ideen?

Akzeptierte Antwort

Include erfordert einen Eigenschaftennamen und keinen Klassennamen. Daher ist es der Name der gewünschten Eigenschaft, nicht der Name des Typs. Das kannst du durch Nachdenken bekommen .


Beliebte Antwort

Sie können .GetType() ohne eine Instanz verwenden, da GetType eine Methode ist.

Sie können den Namen wie folgt vom Typ erhalten:

typeof(Foo).Name

Und wie von Chris erwähnt, können Sie den qualifizierten Namen der Assembly verwenden

typeof(Foo).AssemblyQualifiedName


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum