В настоящее время я изучаю методы расширения C#. Я читал в нескольких местах, что добавление членов в классы уменьшает обратную совместимость для кода, который использует эти классы.Как добавить членов уменьшить обратную совместимость классов?
Я прочитал это здесь: https://blogs.msdn.microsoft.com/vbteam/2007/03/10/extension-methods-best-practices-extension-methods-part-6/
И страница 418 из Pro C# книги Troelson в.
Я боюсь, что это не имеет смысла для меня. Конечно, любой код, который использует экземпляры этих классов по мере их добавления до добавления дополнительных членов (без использования методов расширения, просто добавив их в класс), все равно сможет вызвать все старые методы, свойства, поля и конструкторы, как раньше, поскольку они не изменились. Даже если новые участники могут изменять состояние объекта, они никогда не будут вызываться в старом коде, поэтому код будет обратно совместим.
Что я не вижу здесь?
Вы не видите, как изменение кода, выполняемого, когда данный метод вызывается в экземпляре типа из одной реализации в другую, может каким-то образом повлиять на этот код? – Servy
Я не видел это как изменение кода, скорее добавляя к классу. Очевидно, я вижу, что это опасно возиться с кодом, от которого зависят другие классы. Однако добавление перегрузки метода, которая будет иметь приоритет над исходным методом для определенных параметров (которые могут использоваться в вызовах метода старого кода), как в принятом ниже ответе, является ярким примером того, что именно может пойти не так, подумал о. –
@GeorgeWooding, Добавил второй пример к моему ответу. – devuxer