Kovarianz mit C #
In meinem C # -Code ist ein interessantes Kovarianzproblem aufgetreten.
Ich habe ein GenerikumMatrix<T>
Klasse, und es wurde zum Beispiel instanziiertMatrix<int>
, Matrix<object>
undMatrix<Apple>
.
Für meine Geschäftslogik habe ich sie in eine generische verpacktWrapper<T>
. Dieser Wrapper implementiert nicht generischeINonGenericWrapper
Schnittstelle. Also habe ichWrapper<int>
, Wrapper<object>
undWrapper<Apple>
.
Mein Problem ist: Ich möchte einen Container für all diese 3 definierenWrapper
s. Kann ich nicht sagenList<Wrapper<object>>
, weil ich nicht einfügen kannWrapper<int>
in diese Sammlung. Ich kann nicht einmal sagenList<INonGenericWrapper>
, weil ich in meinem foreach auf das generikum zugreifen möchteMatrix<T>
Parameter.
Cheesy Part: Diese Wrapper werden (de-) serialisiert mit dem bestimmten Typ:MySerializer<Wrapper<Apple>>.Serialize(_myInstanceOfWrappedApple)
.
Ich denke es ist klar, dass ich große Wechsel von vermeiden möchtetypeof
beim serialisieren ..
Was ist meine mögliche Problemumgehung? Ich stecke irgendwie fest.
Danke im Voraus,