Problem mit Reflektor und automatischen Eigenschaften
-
06-09-2019 - |
Frage
Ich habe zerlegt gerade ein Projekt, es zu debuggen mit Reflector , aber es scheint bei Decodierung der ‚kompilieren Ergebnisse‘ der automatischen Eigenschaften sträuben, zB die nächste Zeile gibt mir einen Syntaxfehler. Ich habe versucht, diese manuell Fixierung, aber jedes Mal, wenn ich eine beheben, mehr erscheinen.
private string <GLDescription>k__BackingField;
Gibt es etwas, was ich dagegen tun kann?
Lösung
Ha! Dumm ich: alles, was ich zu tun hatte, eingestellt wurde die Disassembler Optimierung in Reflector der Optionen auf .NET 3.5. Meins war auf 2,0.
Andere Tipps
Der Compiler erzeugt Felder mit "unaussprechlichen Namen." - das heißt solche, die in C # illegal sind selbst, sondern gelten IL
Es gibt keine genau genaue Übersetzung der IL in „normalen“ C # (ohne automatische Eigenschaften). Sie können <
und >
mit _
ersetzen, die gesetzlichen Code geben, aber dann wird es natürlich nicht sein genau der gleiche Code nicht mehr. Wenn Sie erst nach der Fähigkeit sind, jedoch zu debuggen, ist das kein Problem sein wird.
Wenn Sie decompile Iteratoren (dh Methoden yield
-Anweisungen) Sie mehr von den gleichen finden, einschließlich der Verwendung von fault
Blöcken, die wie finally
Blöcke sind, aber sie nur ausgeführt werden, wenn eine Ausnahme aufgetreten ist (aber ohne die Ausnahme abfangen ). Verschiedene andere Konstrukte erzeugen unaussprechliche Namen auch, einschließlich anonymen Methoden, Lambda-Ausdrücke und anonyme Typen.
Auf einer breiteren Kenntnis, tun Sie über die Berechtigung diesen Code zu dekompilieren? Wenn der Autor Sie hat nichts dagegen tun, so sind sie wahrscheinlich, dass Sie bereit sein, um die Quelle zu geben Code zu starten, mit dem würde das Leben leichter machen. Wenn sie nicht wollen Sie ihren Quellcode Debuggen mit zu beginnen, sollten Sie die ethischen (und möglicherweise rechtliche) Verzweigungen decompiling den Code betrachten. Diese je nach Standort variieren kann. Einen echten Anwalt endgültigere Führung konsultieren
EDIT: Nachdem Sie Ihre eigene Antwort gesehen, die sehr viel Sinn macht. Ich werde dies hier lassen für Hintergrundmaterial.