平々毎々(アーカイブ)

はてなダイアリーのアーカイブです。

ジェネリクスとリフレクション

.NETのジェネリクスバイトコードレベルで型に関する情報を残しているので、リフレクションでいろいろな情報が取れる。

こういうクラス定義があって

public class BaseClass<T> {}

public class DerivedClass<T> : BaseClass<T> {}

DerivedClass<int>型のTypeオブジェクトを取得する。

Type t = typeof(DerivedClass<int>);

そしたら、この型オブジェクトを起点に、こう辿れる。

と思ったら実は違います。さてどこが違うか。