Методы расширения вперед совместимы

С помощью методов расширения мы можем легко добавлять методы к любому типу. Очевидно, это открывает возможность в будущей версии.net метод расширения больше не может вызываться (например, тип теперь включает метод с идентичной сигнатурой для метода расширения).

Должно ли это быть проблемой?

Если да, то как мне с этим справиться и спроектировать методы расширения, чтобы минимизировать изменения кода, если это произойдет?

3 ответа

Решение

Если структура в будущем сильно изменится, всегда будут проблемы с совместимостью. Если новый каркасный метод добавляется с тем же именем, что и ваш метод расширения, вполне вероятно, что они имеют одинаковую или, по крайней мере, очень похожую функциональность, и в любом случае требуется рефакторинг.

Я думаю, что сила методов расширения слишком велика, чтобы ее игнорировать только из-за этого риска.

Используйте непонятные имена методов, которые никогда не будут использоваться в фреймворке.

изменить - возможно, неясное не самое подходящее слово, пожалуйста, замените его значимым, но менее распространенным словом

Попытка избежать конфликтов сигнатур действительно является единственной стратегией, позволяющей избежать трудностей, связанных с переработкой кода (при условии, что функциональность метода расширения должна быть сохранена, а не просто преобразована в определение метода в платформе).

Боюсь, что единственное, что вы можете сделать, это предоставить достаточно уникальные имена для ваших методов расширения, чтобы вы были на 100% уверены, что у вас никогда не возникнет конфликта.

Не говоря о добавлении имени вашей кошки к названию метода, просто постарайтесь быть более креативным:)

Другие вопросы по тегам