使用Reflector工具时注意的一些问题
2009-09-01 13:37
211 查看
最近使用Reflector工具时出现一些问题,下面是解决办法。
枚举问题
为了代码可读,可能需要花点时间查阅metadata把int值修改回枚举值,尤其是想利用窗体设计器的,VS2008可能还不理解int值。
属性问题
比如一个叫Names的属性被反编译后,可能还原为的set_Names(names),get_Names()方法,逐个替换可能很慢,可采用正则表达式整体替换。
对于set_Xxx(xxx)方法,可替换
set_{[a-z]*}/(
为
/1 = (
对于get_Xxx()方法,可替换
get_{[a-z]*}/(/)
为
/1
然后,再修复个别被误换的方法。
委托和回调函数问题
一般会被还原为add_Xxx(MethodsName)方法,需要改为 += MethodsName
资源问题
需要使用.Net Framework SDK 下的 resgen.exe 工具,反编译嵌入资源文件*.resources为*.resx文件,
语法为:ResGen.exe *.resources *.resx,然后将*.resx包含入项目,就会自动和同名的窗体文件*.cs关联,如果没有关联可采用先排除再添加大法,一一搞定。
命名空间问题
如果需要切换到IDE的窗体设计器,而不出错,则还需要在*.cs中添加比如System.Windows.Forms的命名空间前缀。
窗体设计器识别问题
需要把以下代码
ComponentResourceManager manager = new ComponentResourceManager(typeof(ClassName));替换为System.ComponentModel.ComponentResourceManager
resources = new
System.ComponentModel.ComponentResourceManager(typeof(ClassName));
窗体设计器才能正常识别。
其它的还有base.FormBorderStyle = FormBorderStyle.None;要改为
base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
还有this.components = new Container();要改为this.components = new System.ComponentModel.Container();
base.AutoScaleMode = AutoScaleMode.Dpi;改为base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
base.FormBorderStyle = FormBorderStyle.None;改为base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
枚举问题
为了代码可读,可能需要花点时间查阅metadata把int值修改回枚举值,尤其是想利用窗体设计器的,VS2008可能还不理解int值。
属性问题
比如一个叫Names的属性被反编译后,可能还原为的set_Names(names),get_Names()方法,逐个替换可能很慢,可采用正则表达式整体替换。
对于set_Xxx(xxx)方法,可替换
set_{[a-z]*}/(
为
/1 = (
对于get_Xxx()方法,可替换
get_{[a-z]*}/(/)
为
/1
然后,再修复个别被误换的方法。
委托和回调函数问题
一般会被还原为add_Xxx(MethodsName)方法,需要改为 += MethodsName
资源问题
需要使用.Net Framework SDK 下的 resgen.exe 工具,反编译嵌入资源文件*.resources为*.resx文件,
语法为:ResGen.exe *.resources *.resx,然后将*.resx包含入项目,就会自动和同名的窗体文件*.cs关联,如果没有关联可采用先排除再添加大法,一一搞定。
命名空间问题
如果需要切换到IDE的窗体设计器,而不出错,则还需要在*.cs中添加比如System.Windows.Forms的命名空间前缀。
窗体设计器识别问题
需要把以下代码
ComponentResourceManager manager = new ComponentResourceManager(typeof(ClassName));替换为System.ComponentModel.ComponentResourceManager
resources = new
System.ComponentModel.ComponentResourceManager(typeof(ClassName));
窗体设计器才能正常识别。
其它的还有base.FormBorderStyle = FormBorderStyle.None;要改为
base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
还有this.components = new Container();要改为this.components = new System.ComponentModel.Container();
base.AutoScaleMode = AutoScaleMode.Dpi;改为base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
base.FormBorderStyle = FormBorderStyle.None;改为base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
相关文章推荐
- 使用Entity Framework时要注意的一些性能问题
- Android分享链接使用ShareSdk需要注意的一些小问题
- 在使用 CCRenderTexture、shader 绘制几何图元时需要注意的一些细节问题
- 使用HQL语句查询的时候需要注意的一些问题
- 在使用putty工具进行远程登录时也许会遇到一些问题,下面列出了一些问题有利于帮助大家解决:
- 使用 Elmah一些要注意的问题
- ANDROID动态加载 使用SO库时要注意的一些问题
- 使用Entity Framework时要注意的一些性能问题
- 关于C语言中的一些注意问题的小记之一----+号使用
- ANDROID动态加载 使用SO库时要注意的一些问题
- LitJson使用中需要注意的一些问题(转)
- Excel COM组件使用的注意事项和一些权限问题(转载)
- 使用Linux raw socket时需要注意的一些问题
- 声明方法java实际开发中泛型使用需要注意的一些问题
- hbase使用中需要注意一些问题
- 使用IOCP需要注意的一些问题~~(不断补充)
- java实际开发中泛型使用需要注意的一些问题
- HBase Thrift 接口的一些使用问题及相关注意事项
- Laravel使用消息队列需要注意的一些问题
- JAVA使用并行流(ParallelStream)时要注意的一些问题