Attributi (linee guida per la progettazione di .NET Framework)
Nota
Questo contenuto viene ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idiomsn and Patterns for Reusable .NET Libraries, 2nd Edition. Tale edizione è stata pubblicata nel 2008 e il libro è stato completamente rivisto nella terza edizione. Alcune informazioni in questa pagina potrebbero non essere aggiornate.
System.Attribute è una classe di base usata per definire attributi personalizzati.
Gli attributi sono annotazioni che possono essere aggiunte agli elementi di programmazione, ad esempio assembly, tipi, membri e parametri. Vengono archiviati nei metadati dell'assembly ed è possibile accedervi in fase di esecuzione usando le API di reflection. Ad esempio, framework definisce ObsoleteAttribute, che può essere applicato a un tipo o a un membro per indicare che il tipo o il membro è stato deprecato.
Gli attributi possono avere una o più proprietà che contengono dati aggiuntivi correlati all'attributo. Ad esempio, ObsoleteAttribute
potrebbe contenere informazioni aggiuntive sulla versione in cui un tipo o un membro è stato deprecato e la descrizione delle nuove API che sostituiscono l'API obsoleta.
Quando viene applicato l'attributo, è necessario specificare alcune proprietà a riguardo. Queste proprietà vengono definite proprietà obbligatorie o argomenti obbligatori, perché sono rappresentate come parametri del costruttore posizionale. Ad esempio, la proprietà ConditionString di ConditionalAttribute è una proprietà obbligatoria.
Le proprietà che non devono necessariamente essere specificate quando viene applicato l'attributo vengono chiamate proprietà facoltative (o argomenti facoltativi). Sono rappresentati da proprietà impostabili. I compilatori forniscono una sintassi speciale per impostare queste proprietà quando viene applicato un attributo. Ad esempio, la proprietà AttributeUsageAttribute.Inherited rappresenta un argomento facoltativo.
✔️ DENOMINARE le classi Attribute personalizzate con il suffisso "Attributo".
✔️ APPLICARE AttributeUsageAttribute agli attributi personalizzati.
✔️ FORNIRE proprietà impostabili per gli argomenti facoltativi.
✔️ SPECIFICARE le proprietà get-only per gli argomenti obbligatori.
✔️ SPECIFICARE i parametri del costruttore per inizializzare le proprietà corrispondenti agli argomenti obbligatori. Ogni parametro deve avere lo stesso nome (anche se con maiuscole e minuscole diverse) della proprietà corrispondente.
❌ EVITARE di fornire parametri del costruttore per inizializzare le proprietà corrispondenti agli argomenti facoltativi.
In altre parole, non avere proprietà che possano essere impostate con un costruttore e un setter. Questa linea guida chiarisce quali argomenti sono facoltativi e quali sono necessari ed evita di introdurre due modi per eseguire la stessa operazione.
❌ EVITARE l'overload dei costruttori di attributi personalizzati.
Avere un solo costruttore comunica chiaramente all'utente quali argomenti sono obbligatori e quali sono facoltativi.
✔️ BLOCCARE le classi Attribute personalizzate, se possibile. In questo modo la ricerca dell'attributo risulta più veloce.
Parti protette da copyright © 2005, 2009 Microsoft Corporation. Tutti i diritti sono riservati.
Ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2a edizione di Krzysztof Cwalina and Brad Abrams, pubblicato il 22 ottobre 2008 da Addison-Wesley Professional nella collana Microsoft Windows Development Series.