是否有任何实用的方法来修补深埋在没有触及类型/成员的唯一签名的方法中的业务逻辑片段?
如果基本实现(在仅二进制组件中)的结构如下:
class PastaPlate
{
int mode;
double increment;
bool fullTiltBoogieMode;
void Loop()
{
while(true)
{
// 1000 lines of spaghetti, which may or may not mutate mode
if (mode == 7) increment = 42.0;
if (mode == 13) increment = -0.666;
if (mode == 8) increment = 64.0;
if (mode == 666) increment = -0.666;
// 1000 more lines of spaghetti which depend on mode and increment
}
}
}
假设我想在if
之后在mode
上引入另一个if (mode == 8)
语句,或修改if (mode == 13)
的结果以更改increment
的值而不修改if (mode == 666)
。是否有一个方面weaver或其他IL修改工具可以支持这种痛苦的用例?