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.

Vedi anche