クラスを他のプログラムから利用できるようにするため、 プログラムやライブラリ中にはクラス名やメンバ名、それらのアクセスレベル等の情報が格納されています。 これらの情報はメタデータと呼ばれ、 プログラムの実行時にメタデータを取り出すための機能をリフレクションと呼びます。
さらに、C# ではクラスのインスタンスから実行時に型情報を取得したり、 リフレクション機能を利用して型情報からメタデータを取り出したりする機能が用意されています。 このようにして実行時に得られる型に関する情報を実行時型情報といいます。
「多態性」
のところで説明しましたが、
C# では基底クラスの変数に派生クラスのインスタンスを格納することが出来ます。
そのため、変数の型と実際に格納されているインスタンスの型が異なることがあります。
そして、GetType メソッドや typeof 演算子を用いることで、
Type クラスを取得することが出来ました。
この Type は C# でリフレクション機能を利用する上で最も基本的なクラスの1つです。
.NET Framwork ではこの他にも MemberInfo や Assembly 等、
リフレクション機能を利用するためのクラスを用意しています。