2009-06-25 12 views
5

Gibt es eine Möglichkeit in .NET 3.0 (oder früher), eine String-Repräsentation einer Methode zu erhalten? Ich weiß, dass ich ein IL-Byte-Array von einem MethodBody-Objekt erhalten kann, aber ich bin daran interessiert, eine Zeichenfolge zu erhalten, die im Wesentlichen den Körper der Methode darstellt, wie es mir in VS erscheint.C# String-Darstellung der Methode

Ich habe im CodeDom-Namespace herumgestöbert, um zu sehen, ob es eine Möglichkeit gibt, Methoden zur Laufzeit in CodeMemberMethods zu konvertieren, aber ich bin bisher trockengelaufen.

Irgendwelche Gedanken?

Antwort

12

Das ist sehr komplexe Arbeit. Im Grunde würden Sie versuchen, reflector in Ihrem Code zu schreiben ... und vergessen Sie nicht, dass nicht alle IL umgekehrt werden können.

Die kurze Antwort ist "Nein, nichts eingebaut".

Sogar Ausdruck Bäume (von Lambdas) kann nicht vollständig umgekehrt zurück zu geeigneten Saiten leicht.

2

Versuchen Sie, mit der Reflektor-API herumzustochern (Sie können überprüfen, ob das noch verfügbar ist, nachdem Red Gate es übernommen hat).

Auch wenn Sie erfolgreich sind, verlieren Sie einige der ursprünglichen Informationen wie lokale Variablennamen, Kommentare oder Formatierung.

Grundsätzlich ist alles, was während der Kompilation weggeworfen wird, für immer verloren.