>>7
いまいち意味不明なんだが、同じリスト型で管理したいクラスってことは
それぞれis-a関係になる共通の継承元があるはずだろ?

class Hoge : 共通の型 {...}
class Fuga : 共通の型{...}

var List<共通の型> = new List<共通の型>();

でダメな理由がわからん
これで「HogeとFugaを抽象化した型」のリストができるだろ?

リストその物の抽象化って話なら、List<T>がそのものズバリなんだから、
何を言いたいのか理解できてない
せめて用途を説明してくれ