Il codice anocra non l'ho scritto e, col senno di poi, posso usare la keyword "is" per verificare che un certo controllo sia di un certo tipo.
Per quel che riguarda la reflection qui un esempio che permette a di reperire dinamicamente i metodi di una classe. Questo viene molto utile quando tali informazioni non sono note a priori:
using System.Reflection;
// get all public static methods of MyClass type
MethodInfo[] methodInfos = typeof(MyClass).GetMethods(BindingFlags.Public |
BindingFlags.Static);
// sort methods by name
Array.Sort(methodInfos,
delegate(MethodInfo methodInfo1, MethodInfo methodInfo2)
{ return methodInfo1.Name.CompareTo(methodInfo2.Name); });
// write method names
foreach (MethodInfo methodInfo in methodInfos)
{
Console.WriteLine(methodInfo.Name);
}