2009-06-26 7 views

risposta

7

per il namespace - mi concentrerò sul quadro standard. linee guida per i nomi dei nomi dei nomi. Metti i metodi di estensione in uno spazio dei nomi in cui saranno tipicamente utilizzati/associati in modo significativo ed eviterai di avere uno spazio dei nomi extra solo per questo.

Per la classe sponsor - in questo caso, è abbastanza irrilevante. Vorrei provare a scegliere un nome di classe che sia significativo, ma non sembra essere una linea guida fissa.

La cosa importante, però, è che la classe sponsor è mai realmente utilizzato direttamente/visto da parte dell'utente dei vostri metodi di estensione. Finché lo spazio dei nomi è stato incluso, il metodo di estensione viene trovato correttamente. Personalmente uso qualcosa di molto simile a jrummell per i miei metodi di estensione, ma Microsoft non lo segue nel Framework (un buon esempio di questo è la classe Enumerable).

+1

Sia Reed e Le risposte di jrummell sono buone. Vado a contrassegnare questa come risposta "The" perché va più in profondità. Una nota però - sponsorizza il nome della classe IMPORTA i linguaggi .NET che non supportano i metodi di estensione, dove la chiamata al metodo statico classico deve essere usato –

13

Non ho visto tutte le raccomandazioni ufficiali, ma sono stato organizzare le mie classi di estensione come [NameSpace] Estensioni [NomeClasse]:

ProjectName.Web.Util.ControlExtensions 
ProjectName.Data.Util.CollectionExtensions 
+3

faccio lo stesso e aggiungerei anche aggiungere che io tendo a mettere tutte le classi di metodo di estensione statici ad alta specializzazione in spazi dei nomi relativi a dove sarebbero stati utilizzati in modo che non si appanna intellisense per gli altri sviluppatori. In altre parole, le mie classi del metodo di estensione non sono necessariamente nello stesso spazio dei nomi della classe che estendono. – jpierson

+1

faccio qualcosa di simile, ma quando aggiungo i metodi di estensione ad un'interfaccia * * invece di una classe, io alla fine con i nomi di classe brutto come 'IMyInterfaceExtensions', e sembra che la classe estensioni è di per sé un'interfaccia :( –

Problemi correlati