Pseudoatributos

    La BCL proporciona algunos atributos que, aunque se usan de la misma manera que el resto, se almacenan de manera especial en los metadatos, como lo harían modificadores como virtual o private. Por ello se les denomina pseudoatributos, y no se pueden  recuperar mediante el ya visto método GetCustomAttributes(), aunque para algunos de ellos se proporcionan otro mecanismos de recuperación específicos. Un ejemplo es el atributo DllImport que ya se ha visto que se usa para definición de métodos externos. Así, dado el siguiente código:


 using System.Reflection;
 using System.Runtime.InteropServices;
 using System;
 using System.Diagnostics;
 
 class A
 {
 [DllImport("kernel32")][Conditional("DEBUG")]
 
  public  static extern void CopyFile(string fuente, string destino);
 
  public static void Main() 
  {
 
   MethodInfo método = typeof(A).GetMethod("CopyFile");   
   foreach (Attribute atributo in método.GetCustomAttributes(false))   
    Console.WriteLine(atributo);
   }
 }

    La salida que se obtendría al ejecutarlo es la siguiente:



 System.Diagnostics.ConditionalAttribute

 

    Donde como se puede ver, no se ha recuperado el pseudoatributo DllImport mientras que el otro (Conditional), que es un atributo normal, sí que lo ha hecho.

Pseudoatributos
José Antonio González Seco

José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.
Fecha de alta:02/12/2006
Última actualizacion:02/12/2006
Visitas totales:8627
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com