Covarianza con C #

Encontré un problema interesante de covarianza en mi código C #.

Tengo un genéricoMatrix<T> clase, y se ha instanciado por ejemploMatrix<int>, Matrix<object> yMatrix<Apple>.

Para mi lógica de negocios, los he envuelto en un genéricoWrapper<T>. Este contenedor implementa no genéricoINonGenericWrapper interfaz. Así que tengoWrapper<int>, Wrapper<object> yWrapper<Apple>.

Mi problema es: Me gustaría definir un contenedor para todos esos 3Wrappers. No puedo decirList<Wrapper<object>>porque no puedo insertarWrapper<int> en esta colección Ni siquiera puedo decirList<INonGenericWrapper>, porque dentro de mi foreach, me gustaría acceder al genéricoMatrix<T> parámetro.

Parte cursi: esta envoltura será (des) serializada con el tipo definido:MySerializer<Wrapper<Apple>>.Serialize(_myInstanceOfWrappedApple).

Creo que está claro que me gustaría evitar grandes cambios detypeof al serializar ..

¿Cuáles son mis posibles soluciones? Estoy un poco atrapado.

Gracias por adelantado,

Respuestas a la pregunta(2)

Su respuesta a la pregunta