Organizarea metodelor de extindere

Cum organizați metodele de extindere? Spuneți dacă am avut extensii pentru clasa de obiecte și pentru clasa de șir sunt tentat să despart aceste metode de extensie în clase IE:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

fac acest lucru prea complicat sau are sens?

0

2 răspunsuri

Există două modalități prin care am organizat metodele de extensie pe care le folosesc,

1) Dacă extensia este specifică proiectului pe care lucrez, atunci îl păstrez în același proiect/ansamblu, dar în propriul spațiu de nume.

2) Dacă prelungirea este de așa natură încât să o folosesc sau să o folosesc și în alte proiecte, atunci le-am separat într-un ansamblu comun pentru extensii.

Cel mai important lucru pe care trebuie să-l țineți cont este, care este domeniul de aplicare pe care îl voi folosi? Organizarea lor nu este dificilă dacă țin doar acest lucru în minte.

0
adăugat

Am organizat metode de extensie utilizând o combinație de spațiu de nume și nume de clasă și este similar cu modul în care descrieți în întrebare.

În general, în soluția mea am un fel de "asamblare primară", care oferă majoritatea funcțiilor comune (cum ar fi metodele de extensie). Vom numi acest ansamblu "cadru" de dragul discuțiilor.

În cadrul ansamblului cadru, încerc să imite spațiile de nume ale lucrurilor pentru care am metode de extensie. De exemplu, dacă extind System.Web.HttpApplication, aș avea un spațiu de nume "Framework.Web". Clase precum "String" și "Object", care se află în spațiul de nume "System", se traduc în spațiul de nume "Framework" rădăcină din acel ansamblu.

În cele din urmă, denumirea merge în funcție de liniile pe care le-ați specificat în întrebare - numele de tip cu "Extensii" ca sufix. Aceasta generează o ierarhie de clase astfel:

  • Framework (namespace)
    • Framework.ObjectExtensions (class)
    • Framework.StringExtensions (class)
    • Framework.Web (namespace)
      • Framework.Web.HttpApplicationExtensions (class)

Beneficiul este că, dintr-o perspectivă de întreținere, este foarte ușor să găsiți mai târziu metode de extensie pentru un anumit tip.

0
adăugat
Wow, un lucru bun am întâlnit acest răspuns înainte de a crea prima mea clasă de extensie.
adăugat autor Sung, sursa