Мне сложно определить время, когда нужно реализовать метод как метод расширения и когда реализовать метод как автономный метод. Каковы некоторые примеры лучшей практики, которые люди определяют при определении этого?
Методы расширения и обычные методы - Идеи лучшей практики
Ответ 1
Используйте метод расширения, если выполнено одно из следующих условий:
- Вам нужен метод для типа, и у вас нет источника.
- Вам нужен метод для типа, у вас есть источник, а тип - это интерфейс.
- Вам нужен метод для типа, у вас есть источник, но добавление метода создает нежелательную связь. *
В противном случае вы должны использовать реальный метод для самого фактического типа.
Я не думаю, что имеет смысл создать метод расширения для класса или структуры, для которого вы являетесь источником - зачем путать читателей с методом расширения, когда достаточно обычного метода?
Рекомендуемое чтение: Руководство по разработке рамок: методы расширения
* Представьте, что вы хотели добавить методы удобства к типу, но не хотите создавать зависимости от сборок или типов, которые не должны быть частью API. Вы можете использовать методы расширения для управления этим.
Ответ 2
С моей точки зрения, я использую методы расширения, когда у меня много полезных функций для определенного типа.
Я нахожу, что...
string.ExtensionMethod();
выглядит чище, чем...
StringHelper.ExtensionMethod("string to do something with");