Я организую методы расширения с использованием комбинации пространства имен и имени класса, и это похоже на то, как вы описываете в вопросе.
Как правило, у меня есть своеобразная «первичная сборка» в моем решении, которая обеспечивает большую часть общей функциональности (например, методы расширения). Мы будем называть эту сборку «Framework» для обсуждения.
В рамках сборки Framework я пытаюсь имитировать пространства имен вещей, для которых у меня есть методы расширения. Например, если я расширяю System.Web.HttpApplication, у меня будет пространство имен «Framework.Web». Классы типа «String» и «Object», находящиеся в пространстве имен System, переходят в корневое пространство имен «Framework» в этой сборке.
И, наконец, именование идет по строкам, указанным в вопросе - имя типа с «Расширениями» в качестве суффикса. Это дает иерархию классов так:
- Framework (пространства имен)
- Framework.ObjectExtensions (класс)
- Framework.StringExtensions (класс)
- Framework.Web (пространство имен)
- Framework.Web.HttpApplicationExtensions (класс)
Выгода заключается в том, что с точки зрения технического обслуживания в дальнейшем очень легко найти методы расширения для данного типа.
Ничего себе, хорошо, что я столкнулся с этим ответом, прежде чем создать свой первый класс расширения. – Sung 2009-03-12 15:21:54