Tencent / xLua

xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc.
Other
9.43k stars 2.46k forks source link

HotFix是替换了 C#的方法,请问有方式可以在保留原方法的基础上添加新的逻辑吗? #128

Closed Jihuihu closed 7 years ago

Jihuihu commented 7 years ago

你好: 我这边在实际使用HotFix时遇到,需要替换的方法块比较大,我们在修正Bug的时候可能只需要修改几行代码就可以了,请问有没有类似于替换构造函数那样,在原有方法之后再调用Lua中对应的方法 或者怎么样才能够调用老的方法呢?我看文档中提过HotFix 在IL层面 加入了Hot的检测,遇到需要HotFix的方法 执行完Lua的代码后 就Return了

chexiongsheng commented 7 years ago

不支持。 构造函数不替换的原因是里头有很多逻辑是编译器插入的,比如父类构造函数的调用。因为构造函数没替换,所以相应的析构函数也不替换。 除此之外,都是有lua实现就直接替换。

Jihuihu commented 7 years ago

谢谢 那请问如果我自己这边想做一个类似的机制 有什么建议吗?

chexiongsheng commented 7 years ago

如果我觉得有必要的话,我直接做了。。所以我当然建议别做。简简单单就好。

函数体大到重写都是负担的话,我觉得要重构下代码。

chexiongsheng commented 7 years ago

ps一下,你可以尝试下市面上一些c#转lua的方案帮你去重新这函数。比如cs2lua最近加了xlua的支持。

Jihuihu commented 7 years ago

主要是 老的代码 需要大量重构 需要一个过程 呵呵 很感谢你的建议 我去看看 C#转Lua的方案