Created
June 7, 2014 05:47
-
-
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#.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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