Analyse des méthodes à l’aide de reflection

Author:

Charger,une,Assemblée,avec,un,nom
{filelink=17552}

using System;
using System.Reflection;

namespace Reflection
{
    class MaClasse
    {
        int x;
        int y;

        public MaClasse(int i, int j)
        {
            x = i;
            y = j;
        }

        public int somme()
        {
            return x + y;
        }

        public bool estEntre(int i)
        {
            if (x < i && i < y) return true;
            else return false;
        }

        public void modifier(int a, int b)
        {
            x = a;
            y = b;
        }

        public void modifier(double a, double b)
        {
            x = (int)a;
            y = (int)b;
        }

        public void afficher()
        {
            Console.WriteLine(" x: {0}, y: {1}", x, y);
        }
    }

    public class UtilisationReflection
    {
        public static void Main()
        {

            // Obtenir le type d'objet qui représente la classe 'MaClasse'
            Type t = typeof(MaClasse);

            Console.WriteLine("Analyse de méthode de " + t.Name.ToUpper());
            Console.WriteLine();

            Console.WriteLine("Methodes utilisées: ");

            MethodInfo[] mi = t.GetMethods();

            // Afficher les méthodes utilisées dans 'MaClasse'.
            foreach (MethodInfo m in mi)
            {
                // Afficher les noms et les types de retour.
                Console.Write("   " + m.ReturnType.Name +
                                " " + m.Name + "(");

                // Afficher les paramètres des méthodes.
                ParameterInfo[] pi = m.GetParameters();

                for (int i = 0; i < pi.Length; i++)
                {
                    Console.Write(pi[i].ParameterType.Name +
                                  " " + pi[i].Name);
                    if (i + 1 < pi.Length) Console.Write(", ");
                }

                Console.WriteLine(")");

                Console.WriteLine();
            }
        }
    }

}

Leave a Reply

Your email address will not be published. Required fields are marked *