Organizuję metody rozszerzania za pomocą kombinacji przestrzeni nazw i nazw klas i jest to podobne do sposobu opisywania w pytaniu.
Generalnie mam pewien "podstawowy montaż" w moim rozwiązaniu, który zapewnia większość współużytkowanych funkcji (takich jak metody rozszerzeń). Nazwamy ten zespół "Ramy" dla celów dyskusji.
W ramach zestawu ramowego staram się naśladować przestrzeń nazw rzeczy, dla których mam metody rozszerzenia. Na przykład, jeśli będę rozszerzać System.Web.HttpApplication, będę miał przestrzeń nazw "Framework.Web". Klasy, takie jak "String" i "Object", znajdujące się w przestrzeni nazw "System", tłumaczą do głównej przestrzeni nazw "Framework" w tym zestawie.
Na koniec, nazewnictwo przebiega wzdłuż linii określonych w pytaniu - nazwa typu z rozszerzeniem "" jako sufiksem. To daje hierarchię klas takiego:
- Framework (namespace)
- Framework.ObjectExtensions (klasa)
- Framework.StringExtensions (klasa)
- Framework.Web (nazw)
- Framework.Web.HttpApplicationExtensions (klasa)
Korzyścią jest to, że z perspektywy konserwacji bardzo łatwo jest później znaleźć metody rozszerzenia dla danego typu.
Wow, dobrze, że wpadłem na tę odpowiedź, zanim utworzyłem swoją pierwszą klasę rozszerzeń. – Sung