Vra

Hoe kan jy jou Uitbreiding metodes te organiseer? Sê as ek uitbreidings vir die klas klas en string voorwerp ek in die versoeking om hierdie uitbreiding metodes in klasse IE skei:

public class ObjectExtensions
{
    ...
}

public class StringExtensions
{
    ...
}

Ek maak hierdie te ingewikkeld of doen dit sin maak?

Was dit nuttig?

Oplossing

Ek organiseer uitbreiding metodes gebruik te maak van 'n kombinasie van naamruimte en klas naam, en dit is soortgelyk aan die manier waarop jy in die vraag te beskryf.

In die algemeen het ek 'n soort van "primêre vergadering" in my oplossing te vind wat die meerderheid van die gedeelde funksies (soos uitbreiding metodes) bied. Ons sal hierdie hele menigte "Framework" noem, ter wille van bespreking.

In die raamwerk vergadering, het ek probeer om die naamruimtes van die dinge waarvoor ek uitbreiding metodes na te boots. Byvoorbeeld, as ek die uitbreiding van System.Web.HttpApplication, ek wil 'n "Framework.Web" naamruimte het. Klasse soos "String" en "Object," word in die "Stelsel" naamruimte, vertaal na die wortel "Framework" naamruimte in daardie vergadering.

Ten slotte, benaming gaan langs die lyne wat jy het gespesifiseer in die vraag - die naam tipe met "Uitbreidings" as 'n agtervoegsel. Dit lewer 'n klas hiërargie soos volg:

  • Framework (naamruimte)
    • Framework.ObjectExtensions (klas)
    • Framework.StringExtensions (klas)
    • Framework.Web (naamruimte)
      • Framework.Web.HttpApplicationExtensions (klas)

Die voordeel is dat, uit 'n onderhoud perspektief, dit is regtig maklik later gaan vind die uitbreiding metodes vir 'n gegewe tipe.

Ander wenke

Daar is twee maniere waarop ek die uitbreiding metodes wat ek gebruik organiseer,

1) As die uitbreiding is spesifiek vir die projek Ek werk op, dan hou ek dit in dieselfde projek / gemeente, maar in sy eie naam ruimte.

2) As die uitbreiding is van 'n soort, sodat ek kan of gebruik dit in ander projekte ook dan ek skei hulle in 'n gemeenskaplike vergadering vir uitbreidings.

Die belangrikste ding om in gedagte te hou is, wat is die omvang wat ek sal gebruik word om hierdie in? Organisering van hulle is nie moeilik as ek dit net in gedagte hou.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top