2008-09-18 3 views
18

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

public class ObjectExtensions 
{ 
    ... 
} 

public class StringExtensions 
{ 
    ... 
} 

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

ответ

12

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

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

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

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

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

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

+0

Ничего себе, хорошо, что я столкнулся с этим ответом, прежде чем создать свой первый класс расширения. – Sung 2009-03-12 15:21:54

3

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

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

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

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

Смежные вопросы