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? 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.
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ł.
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