.NETのジェネリクスはバイトコードレベルで型に関する情報を残しているので、リフレクションでいろいろな情報が取れる。
こういうクラス定義があって
public class BaseClass<T> {} public class DerivedClass<T> : BaseClass<T> {}
DerivedClass<int>型のTypeオブジェクトを取得する。
Type t = typeof(DerivedClass<int>);
そしたら、この型オブジェクトを起点に、こう辿れる。
と思ったら実は違います。さてどこが違うか。