2014-12-02 15 views
11
[AttributeUsage(AttributeTargets.Property)] 
public class MyAttribute : Attribute 
{ 
... 
} 

Voglio che questo attributo personalizzato utilizzato sia su proprietà e Campi ma non altri. Come posso assegnare più destinazioni (AttributeTargets.Property e AttributeTargets.Field)? O semplicemente non è possibile?multipli AttributeTargets in AttributeUsage

E AttributeTargets.All non è quello che voglio.

risposta

19

È possibile specificare più obiettivi come questo, utilizzando l'operatore | (OR bit a bit) per specificare più valori enum:

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] 
public class MyAttribute : Attribute 
{ 
    ... 
} 

L'OR bit a bit operatore lavora con l'AttributeTargets enum perché i suoi valori sono assegnati un particolare modo ed è contrassegnato con l'attributo Flags.

Se vi interessa, potete leggere di più qui:

+0

Grazie uomo! Ho provato '||' ma non ho mai pensato a '|'. –