Typeクラスでは次のようなメソッドによって型で定義されているメンバの情報を取得することができます。 これらのメソッドを使うことによって、型情報からメソッドやフィールドなどのメンバを参照することができ、そこから更にメソッドの呼び出しやフィールドの値の取得など(詳細は§.MemberInfo派生クラスを使ったメンバの呼び出しで後述)を行うことができます。

Typeクラスのメソッド
メソッド 動作
GetMember
GetMembers
指定された名前のメンバ、あるいはすべてのメンバを取得する。 メンバ情報はMemberInfoクラスで返される。
GetConstructor
GetConstructors
指定された引数リストのコンストラクタ、あるいはすべてのメンバを取得する。 ConstructorInfoクラスが返される。
GetEvent
GetEvents
指定された名前のイベント、あるいはすべてのイベントを取得する。 EventInfoクラスが返される。
GetField
GetFields
指定された名前のフィールド、あるいはすべてのフィールドを取得する。 FieldInfoクラスが返される。
GetMethod
GetMethods
指定された名前・引数リストのメソッド、あるいはすべてのメソッドを取得する。 MethodInfoクラスが返される。
GetProperty
GetProperties
指定された名前のプロパティ、あるいはすべてのプロパティを取得する。 PropertyInfoクラスが返される。

戻り値として返されるMethodInfoなどのクラスはすべてMemberInfoクラスから派生したクラスとなっています。 MemberTypeプロパティを参照するとメンバの種類をMemberTypes列挙体で取得することができます。

クラスの型情報からすべてのメンバを取得する
using System;
using System.Reflection;

class C {
  public void M() {} // メソッド
  public int P { get; set; } // プロパティ
  public string F = null; // フィールド
}

class Sample {
  static void Main()
  {
    var t = typeof(C);

    // クラスCのすべてのメンバを取得して表示する
    foreach (MemberInfo m in t.GetMembers()) {
      Console.WriteLine("{0}\t{1}", m.MemberType, m);
    }
    Console.WriteLine();

    // 名前がFのフィールドを取得する
    FieldInfo f = t.GetField("F");

    Console.WriteLine(f);
  }
}
実行結果
Method	Int32 get_P()
Method	Void set_P(Int32)
Method	Void M()
Method	Boolean Equals(System.Object)
Method	Int32 GetHashCode()
Method	System.Type GetType()
Method	System.String ToString()
Constructor	Void .ctor()
Property	Int32 P
Field	System.String F

System.String F

このようにして取得したMemberInfoを使うことにより、メソッドの呼び出しやフィールドの取得・設定などの操作を行うことができます。