c# - .NET Reflector 和 getters/setters 问题

标签 c# reflector

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

起初,我以为每个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 - 程序集是在 Release模式下构建的。

最佳答案

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

关于c# - .NET Reflector 和 getters/setters 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3025304/

相关文章:

c# - 覆盖静态构造函数中的元数据?

c# - 是否有 Reflector 插件或其他工具可以处理自动属性?

.net - 无法在 infer.net fun 中加载 FSharp.Core 版本 4.0.0//dll 中的硬链接(hard link)依赖项?

c# - 使用 C#/.NET 使用自定义文件格式的过滤器处理程序扩展 Windows 搜索索引

c# - CS0234 类型或命名空间名称 'Owin' 在命名空间 'Microsoft' 中不存在

c# - API 19 背景不透明

c# - 环境换行和替换

wpf - 如果是基于WPF的Visual Studio 2010,为什么我不能用反射器打开它?

.net - 如何调试打包在 .NET 程序集中的 .NET 代码(作为单独软件运行)

c# - Reflector 将不再免费。还有其他选择吗?