.NET Reflector和getters / setters问题

时间:2010-06-11 18:34:16

标签: c# reflector

我正在使用最新的.NET Reflector来反汇编内部遗留应用程序,其源代码几乎无法恢复。我需要找到一个讨厌的bug的原因,然后可能修补它。在重新创建项目结构时,Reflector像往常一样做得很好,但很快我发现一些属性调用被“扩展”到get_()set_()方法签名,使源代码无法编译。

起初,我认为每次获取/设置调用都有问题。但仔细看看,其中几个是好的,而其他的(特别是OleDbCommand和Forms.Control属性)将生成为get_()set_()

快速Visual Studio“搜索/替换”与正则表达式解决了这些情况,但它很尴尬。有没有办法让Reflector正确

编辑1 - 下面有问题的代码示例:

/* Generated by .NET Reflector 6.1.0.11 */
/* The variable selectCommand is a OleDbCommand. */
string parameterName = "@P" + Convert.ToString(num);
selectCommand.set_CommandText(selectCommand.get_CommandText() + " WHERE SIGLA = " + parameterName);
/*
   Expected something like this (as ugly as it may seem):
   selectCommand.CommandText = selectCommand.CommandText + " WHERE SIGLA = " + parameterName;
*/

编辑2 - 程序集在发布模式下构建。

3 个答案:

答案 0 :(得分:0)

您在哪里查看Reflector中的源代码?在当前版本(撰写本文时为6.1.0.11)中,反汇编类型然后单击底部的“展开方法”会生成带有代码的完整类定义,包括正确的属性语法(get { ... }和{ {1}})

答案 1 :(得分:0)

将此问题与反汇编到托管C ++一起出现,对吧?可能想要反汇编到C#代码(工具栏中有下拉列表),你将获得通常的属性。

答案 2 :(得分:0)

所以即使这个问题很老,也永远无法实现正确的答案,你现在可以在块ILSpy上给新工具一个机会。

也许它会产生一些更好的源代码。