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