Pregunta

¿Hay una manera de hacer reflector trasero desmontar a las nuevas construcciones de C #?

propiedades implementadas-Auto están saliendo de esta manera:

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

tipos genéricos con enteros u objetos Strings salen mal:

Tuple<User,String><User,string>

Por no hablar de los enumeradores confusas que se generan en respuesta a algún código basado lambda.

alguna idea? Volviendo a la forma original sería grande, pero para llegar a un estado compilables equivalente sería un gran paso adelante. Los ejemplos anteriores no son válidas código C #.

¿Fue útil?

Solución

En cuanto a las propiedades de auto-aplicado, salen bien (es decir, como get; set; sin el respaldo de campo generado por el compilador) en la última versión. Sólo asegúrese de conjunto Optimization a .NET 3.5 o .NET 4.0 en View -> Options -> Disassembler.

Otros consejos

No todo es una traducción de dos vías. Cosas como las expresiones lambda, iteradores y propiedades implementadas automáticamente son azúcar sintáctica en C # que se compilan en código real para nosotros. No siempre es posible tomar el código compilado y determinar lo que el código original parecía.

Si Reflector suposiciones sobre el código con el fin de detectar los resultados de estas abstracciones sintácticas y luego Microsoft cambió el compilador, que se rompería de nuevo. Reflector lugar parece optar por basar su descompilación de las especificaciones CLR y lingüísticos que están menos sujetos a cambio sin previo aviso.

Bueno, obviamente, Reflector simplemente no tiene esa función hasta el momento. Ni siquiera se ha puesto al día con C # 3.0, sin embargo, mucho menos de C # 4.0. Sólo esperar a la próxima versión (si habrá uno).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top