使用扩展方法,我们可以轻松地将方法添加到任何类型。显然,这开启了在未来版本的 .net 中不再调用扩展方法的可能性(例如,该类型现在包含与扩展方法具有相同签名的方法)。
这应该是一个问题吗?
如果是这样,我应该如何处理这个问题并设计我的扩展方法以尽量减少发生这种情况的代码更改?
使用扩展方法,我们可以轻松地将方法添加到任何类型。显然,这开启了在未来版本的 .net 中不再调用扩展方法的可能性(例如,该类型现在包含与扩展方法具有相同签名的方法)。
这应该是一个问题吗?
如果是这样,我应该如何处理这个问题并设计我的扩展方法以尽量减少发生这种情况的代码更改?
如果以后框架改动这么大,总会有兼容性的问题。如果添加了与您的扩展方法同名的新框架方法,则它们很可能具有相同或至少非常相似的功能,并且无论如何都要进行重构。
我认为扩展方法的威力太大而不能仅仅因为这种风险而忽略。
使用在框架中永远不会使用的晦涩的方法名称。
编辑——也许模糊不是最合适的词,请用有意义但不太常见的措辞代替
尝试避免签名冲突确实是避免代码返工麻烦的唯一策略(假设需要保留扩展方法的功能,而不是简单地转换为框架对方法的定义)。
恐怕您唯一能做的就是为您的扩展方法提供足够独特的名称,这样您就可以 100% 确定永远不会发生冲突。
不谈论将猫的名字添加到方法的名称中,只是尝试更有创意:)