Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/05/2011, 01:59
Avatar de bieres
bieres
 
Fecha de Ingreso: marzo-2011
Mensajes: 63
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: Recorrer Métodos

Hola, no entiendo bien lo que pides, pero a lo mejor te sirve esto.

Código:
using System.Reflection;

/// <summary>
        /// Para saber los Campos, metodos, propiedades y eventos de una clase
        /// </summary>
        /// <param name="t">Type</param>
        /// <param name="tipo">[Campos], [Metodos], [Propiedades], [Eventos]</param>
        /// <returns>string[]</returns>
        static internal string[] InfoTipo(Type t, string tipo)
        {
            string[] salida = new string[0];
            int n = 1;
            BindingFlags flags = BindingFlags.Instance
                | BindingFlags.Public
                | BindingFlags.DeclaredOnly
                | BindingFlags.Static;
            switch (tipo)
            {
                case "Campos":
                    {
                        FieldInfo[] cs = t.GetFields(flags);
                        foreach (FieldInfo m in cs)
                        {
                            Array.Resize(ref salida, n);
                            salida[n - 1] = m.Name;
                            n += 1;
                        }
                        break;
                    }
                case "Metodos":
                    {
                        MethodInfo[] mi = t.GetMethods(flags);
                        foreach (MethodInfo m in mi)
                        {
                            if (m.IsSpecialName == false)
                            {
                                Array.Resize(ref salida, n);
                                salida[n - 1] = m.Name;
                                n += 1;
                            }
                        }
                        break;
                    }
                case "Propiedades":
                    {
                        PropertyInfo[] pr = t.GetProperties(flags);
                        foreach (PropertyInfo m in pr)
                        {
                            Array.Resize(ref salida, n);
                            salida[n - 1] = m.Name;
                            n += 1;
                        }
                        break;
                    }
                case "Eventos":
                    {
                        EventInfo[] evs = t.GetEvents(flags);
                        foreach (EventInfo m in evs)
                        {
                            Array.Resize(ref salida, n);
                            salida[n - 1] = m.Name;
                            n += 1;
                        }
                        break;
                    }
            }
            return salida;
        }