durante la programmazione facciamo spesso (sempre) uso degli attibuti, quali private, public o protected.
gli attributi per poter essere utilizzati devono essere riconosciuti dal compilatore che poi "emetterà" il giusto codice IL.
sarebbe comodo poter applicare a classi, metodi ecc dei nostri attributi, per far questo senza intervenire sul compilatore (per far si che vengano riconosciuti) il CLR mette a disposizione gli attributi presonalizzati.
la stessa FCL ne fa uso (anche se in questo casi si tratta di attributi pseudo pesonalizzati), basti pensare all'attributo [XmlElement] .
ma quando risulatno comodi gli attributi presonalizzati? un esempio concreto può essere quello di accertarsi delle credenziali del chiamente prima di eseguire un metodo:
[PrincipalPermission(SecurityAction.Demand,Role=@"Dominio\Mygroup")]
public vois MyMethod(){...}:
ma cosa è esattamente un attributo personalizzato? niente di meno di un istanza di un tipo che deriva direttamente da System.Attribute, con un costruttore pubblico (provate a vedere le classi che derivano da SystemAttribute...sono un bel malloppo).
quando il compilatore trova l'attributo instanzia la classe e seccessivamente la serializza inserendola nella tabella dei metadati del manifesto dell assembly per poter essere utilizzata al momento giusto, questo fa aumentare la dimensione dell' assembly ma risulta estremamente comodo.
come detto prima per creare una propio attributo presonalizzato basta derivar eun tipo da System.Attribute, in un prossimo blog vediamo come fare e soprattutto come ci possa essere utile, questa è solo uan breve "infarinatura" sugli attributi personalizzati, secondo me, uno degli aspetti più importanti del Framevork
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- ma dove vai se il var non ..., il 19 luglio 2006 alle 14:47
- DLINQ volume due, il 15 settembre 2005 alle 15:43
- DLinq mi piace , il 15 settembre 2005 alle 10:19
- ancora stringhe, il 21 dicembre 2004 alle 15:24
- in parziale rettifica o precisazione di quanto detto(...), il 13 dicembre 2004 alle 08:00
- interfacce, implementazioni esplicite, l'1 dicembre 2004 alle 14:12