Каковы наиболее эффективные методы использования методов расширения в .NET?

голоса
37

Я видел это используется во все стороны, и были обвинены в использовании их неправильный путь (хотя в этом случае, я использовал их таким образом , чтобы продемонстрировать точку ).

Итак, что же вы думаете, лучшие практики для использования методов расширения?

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

Должно ли быть коллекция общих методов расширения в виде проекта с открытым исходным кодом?

Обновление: было принято решение о создании организации широкой библиотеки методов расширения

Задан 06/08/2008 в 08:52
источник пользователем
На других языках...                            


6 ответов

голоса
7

Предстоящий выпуск Руководства Design Framework, второе издание будет иметь некоторые рекомендации для реализации методов расширения, но в целом:

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

Кроме того, следует избегать растягивания System.Object, поскольку не все .NET языки будут иметь возможность вызвать метод расширения в качестве расширения. (VB.NET, например, должны были бы назвать его как обычный статический метод на статический класс расширения.)

Не определить метод расширения в том же пространстве имен расширенного типа, если вы не расширяете интерфейс.

Не определить метод расширения с такой же подписью, как «реальный» метод, так как он никогда не будет называться.

Ответил 16/08/2008 d 18:41
источник пользователем

голоса
4

Вы можете захотеть взглянуть на http://www.codeplex.com/nxl и http://www.codeplex.com/umbrella , которые являются как расширение библиотеки методов. Я лично не имел взгляд на исходный код , но я уверен , что ребята там могли бы дать вам некоторые хорошие указатели.

Ответил 07/08/2008 d 13:14
источник пользователем

голоса
3

Язык Objective-C была «Категории» с начала 1990-х годов; это по сути то же самое, как методы расширения .NET. При поиске лучших практик вы можете увидеть, что правила большого пальца Objective-C (Cocoa & NeXT) разработчики придумали вокруг них.

Брент Симмонс (автор читателя NetNewsWire RSS для Mac OS X и iPhone) только отправил сегодня о своих новых правилах стиля для использования категорий и там было немного обсуждения в обществе какао вокруг этой должности.

Ответил 08/08/2008 d 08:46
источник пользователем

голоса
3

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

Core.Extensions.Base64Encode(str);

Мой класс Utils мой Bestest друг во всем мире, это было до того, методы расширения пришли вместе, и они только помогли укрепить наши отношения. Самое большое правило, которое я пошел бы, чтобы дать людям выбор над тем, что расширение рамок они используют, где это возможно.

Ответил 06/08/2008 d 09:08
источник пользователем

голоса
2

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

  • Методы расширения, которые относятся к конкретной бизнес-потребностям проекта (подключены ли они к основным типам данных или пользовательские объекты) не должны быть включены в библиотеке, которая будет распределена по нескольким проектам.
  • Методы расширения, которые относятся к основным типам данных (междунар, строки и т.д.) или генерики, которые имеют более широкое применение могут быть упакованы и распределены по проектам.

Будьте осторожны, не глобально включать методы расширения, которые имеют небольшое приложение, так как они просто засоряют IntelliSense и может привести к путанице и / или неправильного использования.

Ответил 06/08/2008 d 09:02
источник пользователем

голоса
1

Когда я впервые узнал о расширениях я действительно злоупотребляют и злоупотребляют им.

По большей части я начал получать от использования каких-либо методов расширения для целого ряда причин.

Некоторые из причин, почему я перестал использовать их Отмечены в блоге ссылку Скотта выше, такие, как «Подумайте дважды, прежде чем расширения типов вы не владеете». Если вы не имеете никакого контроля над источником для типов вы проходящие, вы можете столкнуться с проблемами / коллизиями в будущем, если тип источника имеют некоторые дополнения / изменения, такие как перемещение проекта на более новую версию .NET. Если новая версия .NET включает в себя метод по типу того же именем, как расширение, кто-то собирается затерта.

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

Когда только чтение через код, который вы не можете сказать, метод, является ли расширение или просто стандартный метод NET API от типа.

Меню IntelliSense может получить очень грязно очень быстро.

Ответил 15/07/2013 d 21:07
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more