Attributi personalizzati

di Marco Leoncini, in c#,

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

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese