C# 如何使Reflector不被新语法阻塞

C# 如何使Reflector不被新语法阻塞,c#,decompiling,reflector,decompiler,C#,Decompiling,Reflector,Decompiler,有没有办法让反射器重新分解到新的c结构 自动实现的属性如下所示: [CompilerGenerated] private string <TypeName>k__BackingField; public string TypeName { [CompilerGenerated] get { return this.<TypeName>k__BackingField; } [CompilerGen

有没有办法让反射器重新分解到新的c结构

自动实现的属性如下所示:

[CompilerGenerated]
private string <TypeName>k__BackingField;
 public string TypeName
 {
     [CompilerGenerated]
     get
      {
         return this.<TypeName>k__BackingField;
      }
      [CompilerGenerated]
      private set
      {
          this.<TypeName>k__BackingField = value;
      }
 }
带有字符串、整数或对象的泛型类型出现错误:

元组

更不用说为响应某些基于lambda的代码而生成的令人困惑的枚举数了


有什么想法吗?回到原始形式固然不错,但达到等效的可编译状态将是一个巨大的进步。上面的例子不是有效的C代码。

很明显,Reflector还没有这个功能。它甚至还没有赶上C3.0,更不用说C4.0了。如果有下一个版本,请等待。

很明显,Reflector还没有这个功能。它甚至还没有赶上C3.0,更不用说C4.0了。如果有下一个版本,请等待。

并非所有内容都是双向翻译。lambda表达式、迭代器和自动实现的属性等都是C语言中的语法糖,可以为我们编译成真正的代码。并不总是可能获取此编译代码并确定原始代码的外观


如果Reflector对代码进行假设,以便检测这些语法抽象的结果,然后Microsoft更改了编译器,那么它将再次被破坏。相反,Reflector似乎选择将其反编译建立在CLR和语言规范的基础上,这些规范不太可能在不事先通知的情况下进行更改。

并非所有内容都是双向翻译。lambda表达式、迭代器和自动实现的属性等都是C语言中的语法糖,可以为我们编译成真正的代码。并不总是可能获取此编译代码并确定原始代码的外观


如果Reflector对代码进行假设,以便检测这些语法抽象的结果,然后Microsoft更改了编译器,那么它将再次被破坏。相反,Reflector似乎选择将其反编译建立在CLR和语言规范的基础上,这些规范不太可能在不事先通知的情况下进行更改。

关于自动实现的属性,它们表现得很好,即:原样;设置在最新版本中没有编译器生成的支持字段。只需确保在视图->选项->反汇编程序中将Optimization设置为.NET 3.5或.NET 4.0。

关于自动实现的属性,它们会很好地显示出来,即按原样显示;设置在最新版本中没有编译器生成的支持字段。只需确保在视图->选项->反汇编程序中将优化设置为.NET 3.5或.NET 4.0。

错误答案:对于lambda表达式、迭代器和自动实现的属性,这显然是可能的。“反射器”还不能做到。@Timwi:我不相信这显然是可能的,我也不同意它应该做到。这样做将是对无法保证的代码进行假设。我认为RedGate不在乎你认为它不应该做什么。此外,它已经做出了大量假设,而且仍然是一个有用的工具。对autoprops和所有其他功能的支持将使它成为一个比现在更好的工具,因为现在它正在生成甚至不解析的C代码。@Timwi:不解析的代码和无效代码是不同的。生成的代码在给定的CLR规范下有效。问题是它生成的代码无法编译。回到原始形式固然不错,但达到等效的可编译状态将是一个巨大的进步。我将在上面添加这个。错误答案:在lambda表达式、迭代器和自动实现的属性的情况下,这显然是可能的。“反射器”还不能做到。@Timwi:我不相信这显然是可能的,我也不同意它应该做到。这样做将是对无法保证的代码进行假设。我认为RedGate不在乎你认为它不应该做什么。此外,它已经做出了大量假设,而且仍然是一个有用的工具。对autoprops和所有其他功能的支持将使它成为一个比现在更好的工具,因为现在它正在生成甚至不解析的C代码。@Timwi:不解析的代码和无效代码是不同的。生成的代码在给定的CLR规范下有效。问题是它生成的代码无法编译。回到原始形式固然不错,但达到等效的可编译状态将是一个巨大的进步。我将在上面添加这一点。部分或全部不确定静态自动道具是否仍然与.net 4.0设置错误。部分或全部不确定静态自动道具是否与.net 4.0设置错误。