关于即将到来的Iron Python实现,请考虑这一点。
从理论上讲,它将允许猴子修补,对吗?不管是好是坏,都无关紧要。考虑到其他人的不可测试代码(至少很容易),动态关键字将允许monkey patching,不是吗?如果我没看错的话,这对C#和VB有很大的潜力。
你对此有何看法?
发布于 2009-12-06 20:21:14
CLR4中的动态类型支持并没有真正为整个.Net类型系统提供完整的猴子补丁支持。它为您提供了另一种模拟对象的方法,但坦率地说,当前的方法已经足够好了(参见moq:http://code.google.com/p/moq/)
使用动态类型时,您会失去智能感知,因此可能会有这样的争论:使用动态类型进行模拟是不可取的。
IronPython风格的拦截将允许您使用自己想要的行为包装现有的对象,但它不允许您告诉框架修补所有Foo对象(从这一点开始),因此IronPython方法将调用Bar2而不是Bar。
请记住,在IronRuby和IronPython中有两个独立的类型系统,一个是底层的CLR类型系统,另一个是IronRuby/IronPython类型系统,当它们调用C#代码时,就会进行编组。因此,即使IronRuby/IronPython可以正确地修补他们自己的类型系统,他们也不能使用相同的机制来修补CLRs类型系统。
如果你想要猴子补丁,你需要正确的拦截,那就是hard:Dynamic interception of calls in .NET
https://stackoverflow.com/questions/1855242
复制相似问题