Подтвердить что ты не робот

Организация методов расширения

Как вы организуете свои методы расширения? Скажем, если бы у меня были расширения для класса объекта и класса string, я испытываю соблазн отделить эти методы расширения в классы IE:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

Я делаю это слишком сложным или это имеет смысл?

4b9b3361

Ответ 1

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

Как правило, в моем решении есть какая-то "первичная сборка", которая обеспечивает большинство общих функций (например, методов расширения). Мы будем называть эту сборку "Framework" для обсуждения.

В рамках сборки Framework я пытаюсь имитировать пространства имен вещей, для которых у меня есть методы расширения. Например, если я расширяю System.Web.HttpApplication, у меня будет пространство имен "Framework.Web". Классы типа "String" и "Object", находящиеся в пространстве имен System, переходят в корневое пространство имен "Framework" в этой сборке.

Наконец, именование идет по строкам, указанным вами в вопросе - имя типа с "Расширениями" в качестве суффикса. Это дает иерархию классов следующим образом:

  • Структура (пространство имен)
    • Framework.ObjectExtensions(класс)
    • Framework.StringExtensions(класс)
    • Framework.Web(пространство имен)
      • Framework.Web.HttpApplicationExtensions(класс)

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

Ответ 2

Существует два способа организовать методы расширения, которые я использую,

1) Если расширение относится к проекту, над которым я работаю, я сохраняю его в том же проекте/сборке, но в своем собственном пространстве имен.

2) Если расширение является таким, чтобы я мог его использовать или использовать в других проектах, я разделяю их в общей сборке для расширений.

Самое главное, о чем нужно помнить, - какова область применения, в которой я буду использовать? Устраивать их не сложно, если я просто помню это.