lundi 5 mars 2012

Trouver une methode par son nom (Reflection C#)

Grace à la lib Reflection de .Net il est possible de retrouver une methode par son nom et de l'appeller.

Les lib à utiliser:
using System;
using System.Reflection;

Stocker la classe:
Type maClasse = typeof(MyClass);

Avoir le nom de la classe:
maClasse.Name;

Retrouver toutes les methodes de la classe (ici on ne cherche que les methodes static public):
MethodInfo[] myArrayMethodInfo = maClasse.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
for (int i=0; i< myArrayMethodInfo.Length; i++)
Debug.Log(""+myArrayMethodInfo[i].Name);

Retrouver une methode par son nom et l'executer (ici la fonction est censée renvoyer une string):
MethodInfo method = maClasse.GetMethod("GetName");
if (method!=null) Debug.Log(method.Invoke(null, null).ToString());

Retrouver le nom de la fonction en cours d'execution:
object method = System.Reflection.MethodBase.GetCurrentMethod();
Debug.Log(method.ToString());


On peut faire pas mal d'autres choses tres interessantes avec cette lib.