2011-07-19 51 views
5

使用扩展方法,我们可以轻松地将方法添加到任何类型。很显然,这将在未来版本的.net中打开扩展方法不能再被调用的可能性(例如,类型现在包括一个与扩展方法具有相同签名的方法)。向前兼容的扩展方法

这应该是一个问题吗?

如果是这样,我该如何处理这个问题并设计我的扩展方法,以尽量减少代码更改?

+0

如果您担心这一点,一种解决方案不会使用扩展方法。 ';)' 您可以从您正在扩展的类继承并添加该方法。您将收到警告,说明您隐藏稍后添加的新方法。或者你可以从静态方法中删除'this'参数修饰符。 –

回答

6

如果框架在未来的变化如此之大,总是会有兼容性问题。如果添加一个新的框架方法与您的扩展方法具有相同的名称,那么它们很可能具有相同的功能,或者至少具有非常类似的功能,因此无论如何都会有重构。

我认为扩展方法的威力太大,不能仅仅因为这个风险而忽略。

+0

我同意。使您的扩展方法尽可能清晰,明显,直接。 – hatchet

0

使用永远不会在框架中使用的模糊方法名称。

编辑 - 也许晦涩是不是最合适的词,请有意义的,但不常见verbage

试图避免冲突签名代替真的避免的麻烦的唯一策略代码重做(假设扩展方法的功能需要保留,而不是简单地转换为框架的方法定义)。

+0

我不是那个粉丝。名字应该清楚。 –

+0

同意,它们应该是有意义的,但我认为有意义和晦涩的需要相互排斥。拉出词库并使用不太常见但明显的动词。 – roken

+1

如果您担心可以随时添加前缀,如ext_Redefine而不是Redefine。 – Blam

0

恐怕你唯一能做的就是为你的扩展方法提供足够的名字,这样你100%肯定你永远不会有冲突。

不谈论加入你的猫方法名的名字,只是尝试更多的创造性:)