Ответ 1
Я организую методы расширения, используя комбинацию пространства имен и имени класса, и это похоже на то, как вы описываете в вопросе.
Как правило, в моем решении есть какая-то "первичная сборка", которая обеспечивает большинство общих функций (например, методов расширения). Мы будем называть эту сборку "Framework" для обсуждения.
В рамках сборки Framework я пытаюсь имитировать пространства имен вещей, для которых у меня есть методы расширения. Например, если я расширяю System.Web.HttpApplication, у меня будет пространство имен "Framework.Web". Классы типа "String" и "Object", находящиеся в пространстве имен System, переходят в корневое пространство имен "Framework" в этой сборке.
Наконец, именование идет по строкам, указанным вами в вопросе - имя типа с "Расширениями" в качестве суффикса. Это дает иерархию классов следующим образом:
- Структура (пространство имен)
- Framework.ObjectExtensions(класс)
- Framework.StringExtensions(класс)
- Framework.Web(пространство имен)
- Framework.Web.HttpApplicationExtensions(класс)
Преимущество состоит в том, что с точки зрения обслуживания вначале очень легко найти методы расширения для данного типа.