Organizowanie metod rozszerzenia [zamknięte]

Jak zorganizować swoje metody rozszerzenia? Powiedzmy, że jeśli miałem rozszerzenia dla klasy object i klasy string, to pokusiłem się o rozdzielenie tych metod rozszerzeń na klasy IE:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}
Czy to zbyt skomplikowane, czy to ma sens?
Author: Jared, 2008-09-19

2 answers

Organizuję metody rozszerzeń używając kombinacji przestrzeni nazw i nazwy klasy, i jest to podobne do sposobu opisanego w pytaniu.

Ogólnie rzecz biorąc, w moim rozwiązaniu mam pewien rodzaj "podstawowego zestawu", który zapewnia większość współdzielonych funkcji (jak metody rozszerzeń). Nazwiemy to zgromadzenie "ramami" dla dobra dyskusji.

W ramach Framework assembly staram się naśladować przestrzenie nazw rzeczy, dla których mam metody rozszerzeń. Na przykład, jeśli rozbudowuję System.Www.HttpApplication, miałbym " Framework.Web " przestrzeń nazw. Klasy takie jak "String" i "Object", znajdujące się w przestrzeni nazw" System", tłumaczą się na główną przestrzeń nazw" Framework " w tym złożeniu.

Wreszcie, nazewnictwo idzie zgodnie z liniami podanymi w pytaniu - nazwa typu z" rozszerzeniami " jako sufiksem. Daje to taką hierarchię klas:

  • Framework (namespace)
    • Framework.ObjectExtensions (class)
    • Framework.StringExtensions (class)
    • Framework.Web (przestrzeń nazw)
      • Framework.Www.HttpApplicationExtensions (class)

Zaletą jest to, że z punktu widzenia konserwacji, naprawdę łatwo jest później znaleźć metody rozszerzenia dla danego typu.

 13
Author: Travis Illig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 20:48:31

Istnieją dwa sposoby organizowania metod rozszerzeń, których używam,

1) Jeśli rozszerzenie jest specyficzne dla projektu, nad którym pracuję, to trzymam je w tym samym projekcie / assembly, ale we własnej przestrzeni nazw.

2) Jeśli rozszerzenie jest tego rodzaju, że mogę lub używam go również w innych projektach, to oddzielam je we wspólnym zestawie dla rozszerzeń.

Najważniejszą rzeczą, o której należy pamiętać, jest to, jaki jest zakres, w którym będę ich używać? Organizowanie ich nie będzie trudno, jeśli będę o tym pamiętał.

 3
Author: Geir-Tore Lindsve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 20:46:52