首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Reflector不被新语法卡住

如何使Reflector不被新语法卡住
EN

Stack Overflow用户
提问于 2010-08-22 06:07:52
回答 3查看 1.1K关注 0票数 1

有没有办法让反射器反汇编回新的c#结构?

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

代码语言:javascript
复制
[CompilerGenerated]
private string <TypeName>k__BackingField;
 public string TypeName
 {
     [CompilerGenerated]
     get
      {
         return this.<TypeName>k__BackingField;
      }
      [CompilerGenerated]
      private set
      {
          this.<TypeName>k__BackingField = value;
      }
 }

带有字符串整型或对象的泛型类型出现错误:

Tuple<User,String><User,string>

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

有什么想法吗?回到最初的形式是很棒的,但达到等价的可编译状态将是向前迈出的一大步。上面的例子不是有效的C#代码。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-28 17:46:26

至于自动实现的属性,它们在最新版本中表现良好(即作为get; set;,没有编译器生成的支持字段)。只需确保在View -> Options -> Disassembler中将Optimization设置为.NET 3.5.NET 4.0即可。

票数 5
EN

Stack Overflow用户

发布于 2010-08-22 06:26:36

并不是所有的东西都是双向的。像lambda表达式、迭代器和自动实现的属性这样的东西是C#中的语法糖,可以为我们编译成真实的代码。获取编译后的代码并确定原始代码是什么样子并不总是可能的。

如果Reflector为了检测这些语法抽象的结果而对代码进行假设,然后Microsoft更改了编译器,那么它将再次崩溃。相反,Reflector似乎选择基于CLR和语言规范进行反编译,这些规范在没有事先通知的情况下较少受到更改的影响。

票数 4
EN

Stack Overflow用户

发布于 2010-08-22 06:10:15

显然,Reflector还没有这个功能。它甚至还没有赶上C# 3.0,更不用说C# 4.0了。只需等待下一个版本(如果会有一个的话)。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3539196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档