リフレクションによって実行時に型自身の情報を取得することができます。 取得できる情報については後述の§.Typeクラスから取得できる情報§.メンバ情報の取得 (MemberInfo)などで解説します。

リフレクション機能を使って実行時に型情報を取得する
using System;
using System.Reflection;

class Account {
  public int ID { get; set; }
  public string Name { get; set; }

  public Account(int id, string name)
  {
    this.ID = id;
    this.Name = name;
  }
}

class Sample {
  static void Main()
  {
    // Accountクラスの型情報を取得する
    var t = typeof(Account);

    Console.WriteLine("Name = {0}", t.Name);
    Console.WriteLine("BaseType = {0}", t.BaseType);

    // Accountクラスのすべてのメンバ情報を取得する
    // (パブリックおよび非パブリックのインスタンスメンバを取得する)
    var members = t.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

    foreach (var m in members) {
      Console.WriteLine("MemberType = {0}, Name = {1}", m.MemberType, m.Name);
    }
  }
}
実行結果例
Name = Account
BaseType = System.Object
MemberType = Method, Name = get_ID
MemberType = Method, Name = set_ID
MemberType = Method, Name = get_Name
MemberType = Method, Name = set_Name
MemberType = Method, Name = Equals
MemberType = Method, Name = Finalize
MemberType = Method, Name = GetHashCode
MemberType = Method, Name = GetType
MemberType = Method, Name = MemberwiseClone
MemberType = Method, Name = ToString
MemberType = Method, Name = obj_address
MemberType = Constructor, Name = .ctor
MemberType = Property, Name = ID
MemberType = Property, Name = Name
MemberType = Field, Name = <ID>k__BackingField
MemberType = Field, Name = <Name>k__BackingField