Map Interface Methods To Class Methods : Interface « Reflection « C# / CSharp 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








19.9.Interface
19.9.1.Get all implemented interface and their methods
19.9.2.Map Interface Methods To Class Methods
19.9.3.Type: IsNestedPrivate, IsNestedPublic
19.9.4.Return Type Inference