Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created June 7, 2014 05:47
Show Gist options
  • Save Fhernd/28cb37c0b1f3734d4608 to your computer and use it in GitHub Desktop.
Save Fhernd/28cb37c0b1f3734d4608 to your computer and use it in GitHub Desktop.
Demostración de la investigación de atributos personalizados a través de reflection en C#.
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());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment