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 3Wrapper
s. 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,