Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. using System;
  2. using System.Reflection;
  3.  
  4. namespace Recetas.Cap03
  5. {
  6.     public class ObsoletoAttribute : Attribute
  7.     {
  8.         public string descripcion;
  9.        
  10.         public ObsoletoAttribute(string descripcion)
  11.         {
  12.             this.descripcion = descripcion;
  13.         }
  14.     }
  15.  
  16.     public class ClaseEjemplo
  17.     {
  18.         // Aplicación del atributo `Obsolete` a un método:
  19.         [ObsoletoAttribute("Este método ha sido marcado como obsolete. Use el método `Metodo2`.")]
  20.         public void Metodo1() { }
  21.        
  22.         public void Metodo2() { }
  23.     }
  24.    
  25.     public sealed class Aplicacion
  26.     {
  27.         public static void Main()
  28.         {
  29.             // Obtenemos la representación `Type` de `ClaseEjemplo`:
  30.             Type tipo = typeof (ClaseEjemplo);
  31.            
  32.             // Creamos una instancia de `MethodInfo` para representar
  33.             // el objeto `Metodo1`:
  34.             MethodInfo infoMetodo = tipo.GetMethod("Metodo1");
  35.            
  36.             // Investiga si el método `Metodo1` ha sido marcado
  37.             // con el atributo `ObsoleteAttribute`:
  38.             bool marcadoObsoleto = Attribute.IsDefined(infoMetodo, typeof (ObsoletoAttribute));
  39.            
  40.             // Resultado:
  41.             Console.WriteLine ("\nEl atributo `ObsoletoAttribute` {0} aplicado para el método `{1}` de la clase `{2}`.\n",
  42.                                marcadoObsoleto ? "está" : "no está", infoMetodo.Name.ToString(), tipo.Name.ToString());
  43.         }
  44.     }
  45. }