Reflection C# Tutorial

using System;
using System.Reflection;
public interface IFaceOne
{
  void MethodA();
}
public interface IFaceTwo
{
  void MethodB();
}
public class MyClass: IFaceOne, IFaceTwo
{
  public enum MyNestedEnum{}
  
  public int myIntField;
  public string myStringField;
  public void myMethod(int p1, string p2)
  {
  }
  public int MyProp
  {
    get { return myIntField; }
    set { myIntField = value; }
  }
  void IFaceOne.MethodA(){}
  void IFaceTwo.MethodB(){}
}
public class MainClass
{
  public static void Main(string[] args)
  {
    MyClass f = new MyClass();
    Type t = f.GetType();
    
    Type[] iFaces = t.GetInterfaces();
    for(int i = 0; i < iFaces.Length; i ++)
    {
      Console.WriteLine("Info on Interface named: {0}", iFaces[i]);
      MethodInfo[] classMethodNames = t.GetInterfaceMap(iFaces[i]).TargetMethods;
      MethodInfo[] interfaceMethodNames = t.GetInterfaceMap(iFaces[i]).InterfaceMethods;
      for(int j = 0; j < classMethodNames.Length; j++)
      {
        Console.WriteLine("Interface method: {0}",  interfaceMethodNames[j].Name);
        Console.WriteLine("is implemented by class method: {0}", classMethodNames[j].Name);
      }
      Console.WriteLine();
    }
  }
}
Info on Interface named: IFaceOne
Interface method: MethodA
is implemented by class method: IFaceOne.MethodA
Info on Interface named: IFaceTwo
Interface method: MethodB
is implemented by class method: IFaceTwo.MethodB