Blog Stats
  • Posts - 16
  • Articles - 0
  • Comments - 123
  • Trackbacks - 31

 

[70-553] – 1. Section 1 – 1. Dev application – 1 – Manage data (3)

Manage data in a .NET Framework application using .NET Framework 2.0 system types (System namespace)

Gli attributi servono ad aggiungere informazioni, “metadati” per essere precisi, alle classi.    Si puo’ fare un po’ di tutto e con la tecnica detta System.Reflection si indaga il contenuto. 

Ci sono attributi per tutti i gusti e dettagliano le informazioni in modo differente. Esempi: 

·         Per i parametri della PInvoke

           [DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]

           extern static void SampleMethod();

 

·         Per il marshalling:

           [DllImport("Shell32", CharSet=CharSet.Auto)]

           internal extern static int ExtractIconEx(

              [MarshalAs(UnmanagedType.LPTStr)]

              string lpszFile,       //size of the icon

 

·         Per la serializzazione:

           [System.Serializable]

·         Per la COM:

           [ComVisibleAttribute(false)]

 

·         Per indicare una condizione legata ad una  define

           [Conditional("TRACE_ON")]

           public static void Msg(string msg) {..}

 

Se c’e’ #define TRACE_ON esiste, altrimenti no...che cosa furba, soprattuto bella nell’accezzione [Conditional("DEBUG")]…

·         Per associare a proprietà ed eventi una categoria

           [Description("Evento per il cambio di classe"), Category("MIEI EVENTI")]

            public event ChangeClass  OnChangeClass

 

·         Per indicare che qualcosa è obsoleto

          [System.Obsolete("Non usarlo piu, usa quello nuovo che si chiamo ABC")]

          public void metodoVecchio()

·         Globali

          [assembly: AssemblyCompany("MIA")]

·         Si possono completamente personalizzare, creandosi una propria classe MieiDati derivata da System.Attribute, dicendogli che si puo’ usare sulle classi e sulle struct ed inserendo le proprietà che ci interessano. A questo punto questo attributo esiste e si puo’ usare a corredo delle ns classi

          [MieiDati(parCostruttore, altriparametri)]

           public class SampleClass

 

     Tutto l’esempio in :  http://msdn2.microsoft.com/en-us/library/sw480ze8(VS.80).aspx

Gli attributi si consultano attraverso  la Reflection,   è possibile fare un sacco di cose tra cui,  controllare le informazioni degli assembly, moduli, creare nuovi tipi a run-time e fare anche late-binding.  Interessante...

http://msdn2.microsoft.com/en-us/library/ms173183(VS.80).aspx

Comments have been closed on this topic.
 

 

Copyright © Bruna Gavioli