如何比较两个类名和成员名不同的类,实际上相同的类?

qingtianzhuren7 2012-03-14 05:02:59
用reflector还原了一个很大的DLL,但由于属性名和方法名很多相同,a,b,c,属性和方法都很简单的命名,存在二义性,很多错误,无法执行,所以就混淆了一下,改变成复杂的成员名,结果不是太满意,特别是接口和继承存在好多没有变化。错误三四千个,修改了一个周了,都不行。
我想获得一个类的属性、方法名称、方法体内容,然后找到混淆后的类,判断如果相同,就分别替代。
...全文
118 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingtianzhuren7 2012-04-09
  • 打赏
  • 举报
回复
上面问题全部解决了,好麻烦!但还有最难一个问题,就是VS里看不到设计器,只有生成后才能看到界面,http://www.2cto.com/kf/201007/52589.html,根据这个改了也照旧
qingtianzhuren7 2012-03-14
  • 打赏
  • 举报
回复
属性名不同,肯定用不了啊!初步想法,比较两类所有成员总数是否相同?每种类型是否数目一样?枚举所有方法体,用正则表达式去掉包含的属性名称后,是否相同?这样肯定行啦!谁告诉下怎么取方法体?
threenewbee 2012-03-14
  • 打赏
  • 举报
回复
使用反射区比较。

if (typeof(ClassA).GetProperties().Select(x => x.Name).Except(typeof(ClassB).GetProperties().Select(x => x.Name)).Count() == 0 && typeof(ClassB).GetProperties().Select(x => x.Name).Except(typeof(ClassA).GetProperties().Select(x => x.Name)).Count() == 0)
{
//说明ClassA和ClassB有完全一样的属性名集合。但是不保证类型一样。你可以完善这个代码。
}

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧