ちょっと立ち止まってください。1 つのクラスに 2 つのことをさせようとしています。また、コンパイル時の問題を実行時に移動します。強力な型を逆シリアル化し、すべてを 1 つにまとめるのではなく、厳密に型指定されたリストに格納することをお勧めします。
すなわち
ViewModel[] viewModels= Serializer.DeserialiseViewModels(fromSomething);
DataModel[] dataModels= Serializer.DeserialiseDataModels(fromSomething);
いずれにせよ、型を逆シリアル化し、それらをリストに追加することに関心があります。ここで車輪を再発明する必要はないので、新しいコレクション クラスを気にしないでください。
SO オブジェクトの配列をデシリアライズしたと仮定しましょう。
object[] loaded = ObjectArraySerializer.Deserialise(fromSomething);
ここで、タイプ T1 および T2 のすべてのアイテムを取得したいとします。
List<T1> itemsT1 = loaded.OfType<T1>().ToList()
List<T2> itemsT2 = loaded.OfType<T2>().ToList()
今仮定する
where T1: TBase, where T2: TBase
できるよ
List<TBase> TBaseItems = itemsT1.Cast<TBase>().Concat(itemsT2.Cast<TBase>()).ToList();
または、すぐにそれを行うこともできます。
List<TBase> tbaseItems= loaded.OfType<TBase>().ToList();