Мне сложно представить, чтобы добавить метод, не зная глубоко о существующем коде. Например, вы использовали сторонний класс, чтобы сделать что-то, что потребовало бы от вас расширения функциональности этого класса, учитывая, что вы не являетесь первоначальным разработчиком и у вас нет идей, как все устроено в учебный класс? Это почти бессмысленно делать так же, как бессмысленно водить машину, когда ты не видишь. В случае LINQ, где он реализован дизайнерами / кодами Microsoft, это имело большой смысл, поскольку они обладают знаниями о том, как сказать внутреннюю реализацию последовательности, и теперь они хотят расширить ее функциональность, добавив метод Count для подсчета всех элементы в последовательности. Сказав это, я хотел бы, чтобы кто-то оспорил меня неправильно, приведя реалистичный пример, где необходим метод расширения.