Ich betrachte etwas Kovarianz / Kontravarianz Zeug, ich habe eine viel breitere Frage, aber alles läuft darauf hinaus:
%Vor%Dies funktioniert nicht, obwohl BaseEntity die abstrakte Elternklasse von ProductStyle ist, gibt es eine Möglichkeit, dies zu erreichen?
Der einzige Weg, dies zu tun, ist mit einer generischen Beschränkung out
(die es schwer macht, Objekte zu speichern, aber gut, sie zu erhalten), auf einem interface
(nicht% Code%). Wenn Sie Folgendes haben:
dann kann class
einer Variablen vom Typ IGenericRepository<ProductStyle>
zugewiesen werden, da alle IGenericRepository<BaseEntity>
auch ProductStyle
sind und wir uns auf die Verwendung von covariant / BaseEntity
beschränkt haben:
Beachten Sie jedoch, dass diese Verwendung von covariant / out
Folgendes unmöglich macht:
Ich frage mich nur, ob so etwas auch nützlich wäre - mit einer Beschränkung der Definition Ihres GenericRepository, das den Basistyp T
begrenzt:
Wenn Sie also eine Methode GetRepo<T>
haben, könnte diese Methode ein GenericRepository von T zurückgeben, und Sie sind sicher, dass T
ein Kind von BaseEntity
ist.