using System;
using System.Reflection;
namespace Recetas.Cap03
{
public class ObsoletoAttribute : Attribute
{
public string descripcion;
public ObsoletoAttribute(string descripcion)
{
this.descripcion = descripcion;
}
}
public class ClaseEjemplo
{
// Aplicación del atributo `Obsolete` a un método:
[ObsoletoAttribute("Este método ha sido marcado como obsolete. Use el método `Metodo2`.")]
public void Metodo1() { }
public void Metodo2() { }
}
public sealed class Aplicacion
{
public static void Main()
{
// Obtenemos la representación `Type` de `ClaseEjemplo`:
Type tipo = typeof (ClaseEjemplo);
// Creamos una instancia de `MethodInfo` para representar
// el objeto `Metodo1`:
MethodInfo infoMetodo = tipo.GetMethod("Metodo1");
// Investiga si el método `Metodo1` ha sido marcado
// con el atributo `ObsoleteAttribute`:
bool marcadoObsoleto = Attribute.IsDefined(infoMetodo, typeof (ObsoletoAttribute));
// Resultado:
Console.WriteLine ("\nEl atributo `ObsoletoAttribute` {0} aplicado para el método `{1}` de la clase `{2}`.\n",
marcadoObsoleto ? "está" : "no está", infoMetodo.Name.ToString(), tipo.Name.ToString());
}
}
}