list.Add ((*2)(*1)obj);

もう少し正確に書くとライブラリによって定義された(*2)の型変換が発動するために、
(*1)は元の型にもどさなければいけません。
型は(自分以外の人間が作るので)実行時にしかわかりません。
だから動的にGetType()の結果と同じ型に昇格させるにはどうすればいいですか