2008-09-18 16 views
18

W jaki sposób organizujesz swoje metody rozszerzania? Powiedzieć, czy miałem Rozszerzenia klasy obiekt i strun klasy Kusi mnie, aby oddzielić te metody rozszerzenie do klas IE:Porządkowanie metod rozszerzeń

public class ObjectExtensions 
{ 
    ... 
} 

public class StringExtensions 
{ 
    ... 
} 

ja czyniąc to zbyt skomplikowane lub robi to ma sens?

Odpowiedz

12

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.

+0

Wow, dobrze, że wpadłem na tę odpowiedź, zanim utworzyłem swoją pierwszą klasę rozszerzeń. – Sung

3

Istnieją dwa sposoby, które organizuję metod rozszerzeń, które używam,

1) Jeżeli rozszerzenie jest specyficzne dla projektu pracuję nad, a potem utrzymać go w tej samej projektu/zespołu, ale w własnej przestrzeni nazw.

2) Jeśli rozszerzenie jest tego rodzaju, abym mógł lub używa go również w innych projektach, to rozdzielam je w ramach wspólnego zestawu dla rozszerzeń.

Najważniejszą rzeczą, o której należy pamiętać, jest zakres, w jakim będę je wykorzystywać? Organizowanie ich nie jest trudne, jeśli tylko o tym pamiętam.

Powiązane problemy