почему методы расширения в библиотеках классов C # - PullRequest
7 голосов
/ 03 января 2012

Я прошел некоторые MSDN документации .Я также нашел там методы расширения.

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

в чем преимущество?разница?

Ответы [ 4 ]

3 голосов
/ 03 января 2012

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

1 голос
/ 03 января 2012

Документированные методы расширения определены в IEnumerable<T>, который ObjectSet<T> реализует.

Они документированы, так что вы знаете, что можете их использовать.

В качестве методов расширения они заканчиваются расширением любой тип, реализующий этот интерфейс, бесплатно.

1 голос
/ 03 января 2012

Методы расширения, как следует из названия, расширяют функциональность или удобство использования целевого типа.

  1. Эти методы могут быть добавлены позже (чем время создания типа) после того, как тип уже опубликован.
  2. Они могут быть написаны разными группами людей.
  3. Методы расширения могут предназначаться для интерфейсов.(В качестве альтернативы можно было бы использовать общий базовый тип с этими методами или переиспользовать их в каждом типе)
  4. Разные люди могут расширять один и тот же тип по-разному в соответствии со своими потребностями.* Правильное использование методов расширения может удалить ортогональный беспорядок из фактического определения / реализации типа (вместо того, чтобы сфокусировать основные функциональные возможности типа в определении типа).

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

0 голосов
/ 03 января 2012

Я думаю, что это, скорее всего, «проблема маркетинга». Способ BCL потребителя (нас) посоветовать использовать методы расширения там, где они нам нужны.

С точки зрения удобства использования, нет никакой пользы , imo, их интеграции в BCL

...