我试图挂钩外部.net程序的方法,msft Fakes框架似乎使用Shims非常容易。
以下是一个例子: 让我们假设一个游戏使用的库包含一个带有AddMessage(msg)方法的聊天类。我希望以这样的方式修改该方法,使用参数调用我的函数。然后我可以修改msg并以修改后的msg作为参数返回原始函数。 现在,下次有任何内容打印到聊天时,我的函数将被执行,修改后的字符串将显示在聊天框中。 我可以通过修改dll本身的IL asm来做到这一点,但对于更大的修改或者目标更新,这是不可持续的。
我的问题是,由于假货仅用于单元测试环境,因此垫片仅在ShimsContext中工作 - 这是为了防止人们在测试用例之外覆盖方法,但这恰好是什么我想要做。
是否有可能全球'用垫片覆盖方法还是在这方面锁定框架? 如果它被锁定,是否有任何框架可以帮助我实现目标?