2010-02-19 10 views
42

Ho visto alcuni degli esempi di attributo use, ad es. (come una mappa per la fabbrica dinamica) http://msdn.microsoft.com/en-us/magazine/cc164170.aspxQuando dovrei usare l'attributo in C#?

chiedo solo che cosa è il vantaggio di utilizzare l'attributo? riesco a trovare il riferimento sulla http://msdn.microsoft.com/en-gb/z0w1kczw(VS.80).aspx tuttavia, non sono sicuro quando e perché dovrei provare a usarlo.

+4

Qualunque cosa si finisce per decidere di fare, mantenere i vostri attributi come dati puri con nessun comportamento. Se è necessario implementare il comportamento in base all'attributo, inserire il comportamento in un'altra classe in modo da poterli variare in modo indipendente. –

risposta

29

In .NET Framework, attributi possono essere utilizzati per molte ragioni - come

  • Definizione delle classi sono serializzabile

  • Scegliere quali metodi sono esposti in un servizio Web

Attributes consentono di aggiungere descriptions alle classi, proprietà e metodi in fase di progettazione che possono essere esaminati in fase di esecuzione tramite riflessione.

Considerate questo esempio:

Diciamo che avete una classe che ha un metodo da versione precedente, che è ancora in uso per qualsiasi motivo ed ora siete venuti su con una nuova versione della classe che rende fantastico uso di Elenco generico e LINQ e ha un nuovo metodo per scopi simili. Vorresti che gli sviluppatori preferissero quello nuovo fornito nella versione successiva della tua libreria. Come lo farai? Un modo è scrivere nella documentazione. Un modo migliore è usare l'attributo come segue.

public class AccountsManager 
{ 
    [Obsolete("prefer GetAccountsList", true)] 
    static Account[] GetAccounts() { }  
    static List<Account> GetAccountsList() { }  
} 

Se un metodo obsolete viene utilizzato quando il programma viene compilato, lo sviluppatore ottiene questo informazioni e decide di conseguenza.

AccountManager.GetAccounts() è obsoleto: preferiscono GetAccountsList

Possiamo anche creare e aggiungere Custom Attributes secondo i requisiti.

Riferimento:


Spero che questo aiuti

+3

Gli attributi sono metadati aggiunti ad una classe, interfaccia, funzione, proprietà, ecc. In .NET. I metadati forniscono ulteriori informazioni ** relative a ** un articolo e danno all'utente l'elemento la possibilità di accedere ad esso. Gli attributi sono memorizzati sul Tipo e non sull'istanza. – AxelEckenberger

+0

Grazie per la risposta e il riferimento. Forse non sono così bravo a C# per trovare una situazione che vorrei usare attributo personalizzato. Tratto l'attributo come una descrizione compilata. Poiché richiede una riflessione lenta da usare, il che mi fa sentire che non è così utile. – ccppjava

+0

Ho aggiornato la risposta con l'esempio. –

0

.NET Framework pubblicitario predefinito e usi tipi di attributi per controllare il comportamento in fase di esecuzione dell'applicazione.

consideri attributo [WebMethod], al framework runtime risolve questo attributo e determinare questo metodo sta per essere esposto in un webservice.

Allo stesso modo, è possibile scrivere la vostra abitudine attributi per controllare il comportamento dell'applicazione in fase di esecuzione. Gli attributi possono avere come target classi, metodi, proprietà, delegate, enum, eventi, campi ...

Per risolvere l'attributo in fase di esecuzione, è necessario utilizzare la riflessione.

Verificare il collegamento MSDN per ulteriori dettagli.

4

Considerare un attributo come metadati sul metodo o sulla proprietà a cui appartiene. Racconta qualcosa di più su un membro.

5

Gli attributi sono appropriati quando si desidera allegare metadati alle classi o ai membri della classe, nonché quando si applica un comportamento comune senza dover implementare una determinata interfaccia per ogni unità che condivide il comportamento. Quest'ultimo è un esempio di aspect-oriented programming.

Problemi correlati