get、set属性
在.NET的编译过程中get、set属性转化为get_func()、set_func(xxx)方法。
因此对于反编译出来的代码,逐个替换可能很慢,可以采用下面正则表达式分别进行查找替换:
对于get访问器:
\.get_{[^\(\)]+}\(\) 替换为 \.\1
对于set访问器:
\.set_{[^\(]+}\({[^\)]+}\) 替换为 \.\1 = \2
如果上面的无法正常使用也可以使用:
对于get访问器:
get_{[a-z]*}\(\) 替换为 \1
对于set访问器:
set_{[a-z]*}\( 替换为 \1 = (
然后再修复个别被误换的地方。
本文地址:http://www.cnblogs.com/Interkey/p/link_1.html
索引器
对于***.get_Item(num) 可以通过\.get_Item\({[a-z]+}\) 替换为 [\1]
对于***.get_Item(0) 可以通过\.get_Item\({[0-9]+}\) 替换为 [\1]
对于***.get_Item() 其实也就是一个get访问器,所以不需要额外处理。
上述两种的通用正则为:
\.get_Item\({[a-z|0-9]+}\) 替换为 [\1]
注意:
不能使用\.get_Item\({[a-z|0-9]*}\),
虽然它能处理***.get_Item(num)、***.get_Item(0)、***.get_Item()三种情况,但它将***.get_Item()作为索引器而非属性来处理而出错!
事件的订阅与取消
对于事件的订阅可以使用
\.add_{[a-z]+} 替换为 \.\1 +=
同样,对于事件的取消订阅可以使用
\.remove_{[a-z]+} 替换为 \.\1 -=
说明