using System;
using System.Reflection ;
namespace Recetas.Cap03
{
public class ClaseDemo
{
public int entero = 0 ;
public string cadena = null ;
public ClaseDemo( ) { }
public void Metodo ( ) { }
}
public sealed class UsoGetMembers
{
public static void Main( )
{
try
{
// Instanciación de `ClaseDemo`:
ClaseDemo cd = new ClaseDemo( ) ;
// Arreglo para la contentención de la descripción
// de los atributos de los miembros de la clase `ClaseDemo`:
MemberInfo[ ] miembros;
// Obtención de la representación `Type` de la
// clase `ClaseDemo`:
Type tipo = cd.GetType ( ) ;
// Obtiene un arreglo con todos los miembros public de `ClaseDemo`:
miembros = tipo.GetMembers ( ) ;
// Resultado:
Console.WriteLine ( "\n Los miembros de la clase `{0}` son:\n " , tipo) ;
for ( int i = 0 ; i < miembros.Length ; ++ i)
{
// Detalle el nombre del miembro y el su tipo:
Console.WriteLine ( "\t `{0}` es un `{1}`" , miembros[ i] .Name .ToString ( ) , miembros[ i] .MemberType .ToString ( ) ) ;
}
}
catch( Exception e)
{
Console.WriteLine ( "Excepción: {0}" , e.Message ) ;
}
Console.WriteLine ( ) ;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKCm5hbWVzcGFjZSBSZWNldGFzLkNhcDAzCnsKICAgIHB1YmxpYyBjbGFzcyBDbGFzZURlbW8KICAgIHsKICAgICAgICBwdWJsaWMgaW50IGVudGVybyA9IDA7CiAgICAgICAgcHVibGljIHN0cmluZyBjYWRlbmEgPSBudWxsOwogICAgICAgIAogICAgICAgIHB1YmxpYyBDbGFzZURlbW8oKSB7IH0KICAgICAgICAKICAgICAgICBwdWJsaWMgdm9pZCBNZXRvZG8gKCkgeyB9CiAgICB9CiAgICAKICAgIHB1YmxpYyBzZWFsZWQgY2xhc3MgVXNvR2V0TWVtYmVycwogICAgewogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgICAgICB7CiAgICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBJbnN0YW5jaWFjacOzbiBkZSBgQ2xhc2VEZW1vYDoKICAgICAgICAgICAgICAgIENsYXNlRGVtbyBjZCA9IG5ldyBDbGFzZURlbW8oKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gQXJyZWdsbyBwYXJhIGxhIGNvbnRlbnRlbmNpw7NuIGRlIGxhIGRlc2NyaXBjacOzbiAKICAgICAgICAgICAgICAgIC8vIGRlIGxvcyBhdHJpYnV0b3MgZGUgbG9zIG1pZW1icm9zIGRlIGxhIGNsYXNlIGBDbGFzZURlbW9gOgogICAgICAgICAgICAgICAgTWVtYmVySW5mb1tdIG1pZW1icm9zOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBPYnRlbmNpw7NuIGRlIGxhIHJlcHJlc2VudGFjacOzbiBgVHlwZWAgZGUgbGEgCiAgICAgICAgICAgICAgICAvLyBjbGFzZSBgQ2xhc2VEZW1vYDoKICAgICAgICAgICAgICAgIFR5cGUgdGlwbyA9IGNkLkdldFR5cGUoKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gT2J0aWVuZSB1biBhcnJlZ2xvIGNvbiB0b2RvcyBsb3MgbWllbWJyb3MgcHVibGljIGRlIGBDbGFzZURlbW9gOgogICAgICAgICAgICAgICAgbWllbWJyb3MgPSB0aXBvLkdldE1lbWJlcnMoKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gUmVzdWx0YWRvOgogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUgKCJcbkxvcyBtaWVtYnJvcyBkZSBsYSBjbGFzZSBgezB9YCBzb246XG4iLCB0aXBvKTsKICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWllbWJyb3MuTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgLy8gRGV0YWxsZSBlbCBub21icmUgZGVsIG1pZW1icm8geSBlbCBzdSB0aXBvOgogICAgICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lICgiXHRgezB9YCBlcyB1biBgezF9YCIsIG1pZW1icm9zW2ldLk5hbWUuVG9TdHJpbmcoKSwgbWllbWJyb3NbaV0uTWVtYmVyVHlwZS5Ub1N0cmluZygpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUgKCJFeGNlcGNpw7NuOiB7MH0iLCBlLk1lc3NhZ2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSAoKTsKICAgICAgICB9CiAgICB9Cn0=