www.devjoker.com

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.