Методы расширения вперед совместимы
С помощью методов расширения мы можем легко добавлять методы к любому типу. Очевидно, это открывает возможность в будущей версии.net метод расширения больше не может вызываться (например, тип теперь включает метод с идентичной сигнатурой для метода расширения).
Должно ли это быть проблемой?
Если да, то как мне с этим справиться и спроектировать методы расширения, чтобы минимизировать изменения кода, если это произойдет?
3 ответа
Если структура в будущем сильно изменится, всегда будут проблемы с совместимостью. Если новый каркасный метод добавляется с тем же именем, что и ваш метод расширения, вполне вероятно, что они имеют одинаковую или, по крайней мере, очень похожую функциональность, и в любом случае требуется рефакторинг.
Я думаю, что сила методов расширения слишком велика, чтобы ее игнорировать только из-за этого риска.
Используйте непонятные имена методов, которые никогда не будут использоваться в фреймворке.
изменить - возможно, неясное не самое подходящее слово, пожалуйста, замените его значимым, но менее распространенным словом
Попытка избежать конфликтов сигнатур действительно является единственной стратегией, позволяющей избежать трудностей, связанных с переработкой кода (при условии, что функциональность метода расширения должна быть сохранена, а не просто преобразована в определение метода в платформе).
Боюсь, что единственное, что вы можете сделать, это предоставить достаточно уникальные имена для ваших методов расширения, чтобы вы были на 100% уверены, что у вас никогда не возникнет конфликта.
Не говоря о добавлении имени вашей кошки к названию метода, просто постарайтесь быть более креативным:)