Ich möchte eine C# -Datei analysieren. Das einzige, was ich möchte, ist festzustellen, ob es eine Eigenschaft mit einem bestimmten Namen enthält; nur eine einfache wahre/falsche Antwort. Oder besser gesagt, da ich in jedem Lauf für mehr als eine Eigenschaft hatte die Überprüfung, eine Liste der Eigenschaftsnamen extrahieren könnte hilfreich seinExtrahieren von Eigenschaftsnamen aus einer C# -Quelldatei
Ich dachte, dass ich eine elegante Lösung mit der CodeDomProvider
Funktionalität (f # Beispiel) erstellen können:
Leider ist die Parse
Funktion nicht für die CSharpCodeProvider
implementiert. Gibt es eine Möglichkeit, eine aus einer Quelldatei zu bekommen? Oder gibt es einen anderen eleganten Weg? (Ich hatte gehofft, reguläre Ausdrücke zu vermeiden)?
Edit: Ich werde dies für die automatische Code-Generierung verwenden. Im Grunde werde ich eine partielle Klasse in der Datei xyz.partial.cs erzeugen. Dies erzeugt eine Skeletteigenschaft. Aber wenn ich die Implementierung einer Eigenschaft ändern möchte, werde ich diese Eigenschaft ausschneiden und in die handcodierte xyz.cs einfügen. Wenn ich die generierte Klasse neu erzeuge, möchte ich, dass Eigenschaften, die ich in die handcodierte Datei verschoben habe, übersprungen werden.
Daher kommt Reflexion nicht in Frage, denn die Reflektion sagt mir, dass die Eigenschaft tatsächlich existiert, aber nicht, wenn sie in der einen oder anderen Datei definiert ist.
Trotzdem jucke ich, um Expresso zu öffnen und es zu versuchen. Ich kann nichts ausdrücken und keine Macht in dem Vers kann mich aufhalten. –
Haben Sie über die kompilierte Version der Quelle nachgedacht? Oder ist das keine Option? Nicht sicher, ob Reflektion Eigenschaftsnamen bereitstellt. –
@Moron - Das sollte eigentlich ganz gut funktionieren. – ChaosPandion