Question

Y at-il un moyen de faire réflecteur désassembler retour aux nouvelles constructions C #?

propriétés Auto Mis en œuvre sortent comme ceci:

[CompilerGenerated]
private string <TypeName>k__BackingField;
 public string TypeName
 {
     [CompilerGenerated]
     get
      {
         return this.<TypeName>k__BackingField;
      }
      [CompilerGenerated]
      private set
      {
          this.<TypeName>k__BackingField = value;
      }
 }

Types génériques avec ints ou objets à cordes sortent mal:

Tuple<User,String><User,string>

Pour ne pas mentionner les agents recenseurs confusion qui sont générés en réponse à un code à base de lambda.

Des idées? Pour en revenir à la forme originale serait formidable, mais obtenir un équivalent état compilable serait un grand pas en avant. Les exemples ci-dessus ne sont pas valables du code C #.

Était-ce utile?

La solution

En ce qui concerne les propriétés mises en œuvre automatiquement, ils sortent bien (à savoir que get; set; sans le soutien-champ généré par le compilateur) dans la dernière version. Assurez-vous que vous définissez Optimization à .NET 3.5 ou .NET 4.0 dans View -> Options -> Disassembler.

Autres conseils

Pas tout est une traduction dans les deux sens. Des choses comme des expressions lambda, itérateurs et propriétés implémentées automatiquement sont le sucre syntaxique en C # qui se compilé en code réel pour nous. Il est pas toujours possible de prendre ce code compilé et déterminer quel est le code d'origine ressemblait.

Si réflecteur fait des hypothèses sur le code afin de détecter les résultats de ces abstractions syntaxiques et Microsoft a changé le compilateur, il serait brisé à nouveau. Réflecteur apparaît au lieu de choisir de fonder sa décompilation sur les spécifications CLR et linguistiques qui sont moins sujettes à modification sans préavis.

Eh bien, évidemment, réflecteur n'a tout simplement pas cette fonctionnalité encore. Il n'a même pas pris avec C # 3.0 encore, beaucoup moins C # 4.0. Il suffit d'attendre la prochaine version (s'il y aura un).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top