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()); } } }