Covariância com C #

Encontrei algum problema interessante de covariância no meu código c #.

Eu tenho um genéricoMatrix<T> classe, e foi instanciado, por exemploMatrix<int>, Matrix<object> eMatrix<Apple>.

Para minha lógica de negócios, agrupei-os em um genéricoWrapper<T>. Este invólucro implementa não genéricoINonGenericWrapper interface. Então eu tenhoWrapper<int>, Wrapper<object> eWrapper<Apple>.

Meu problema é: Eu gostaria de definir um contêiner para todos esses 3Wrappers. Não posso dizerList<Wrapper<object>>porque não consigo inserirWrapper<int> nesta coleção. Eu nem posso dizerList<INonGenericWrapper>, porque dentro do meu foreach, eu gostaria de acessar o genéricoMatrix<T> parâmetro.

Parte brega: esse Wrappers será (des) serializado com o tipo definido:MySerializer<Wrapper<Apple>>.Serialize(_myInstanceOfWrappedApple).

Acho claro que gostaria de evitar grandes trocas detypeof ao serializar ..

Quais são minhas possíveis soluções alternativas? Estou meio preso.

Desde já, obrigado,

questionAnswers(2)

yourAnswerToTheQuestion