Ответ 1
Используйте метод расширения, если выполнено одно из следующих условий:
- Вам нужен метод для типа, и у вас нет источника.
- Вам нужен метод для типа, у вас есть источник, а тип - это интерфейс.
- Вам нужен метод для типа, у вас есть источник, но добавление метода создает нежелательную связь. *
В противном случае вы должны использовать реальный метод для самого фактического типа.
Я не думаю, что имеет смысл создать метод расширения для класса или структуры, для которого вы являетесь источником - зачем путать читателей с методом расширения, когда достаточно обычного метода?
Рекомендуемое чтение: Руководство по разработке рамок: методы расширения
* Представьте, что вы хотели добавить методы удобства к типу, но не хотите создавать зависимости от сборок или типов, которые не должны быть частью API. Вы можете использовать методы расширения для управления этим.