Obecnie czytam na temat kowariancji i kontrawariancji w języku C#.Czy kowariancja/kontrawariancja ma zastosowanie do niejawnie konwertowalnych typów, które nie implementują wspólnego interfejsu?
Wszystkie przykłady zawierają szczegóły obiektów podlegających zamianie i różnią się ze względu na dokładność implementacji interfejsu, np.
Gdzie Circle : IShape
kowariancji: SomeType<Circle> as SomeType<IShape>
kontrawariancja: SomeType<IShape> as SomeType<Circle>
Jeśli TypeA
i TypeB
każdy mieć implicit converter
napisany do konwersji do innego typu, ale nie realizują żadnej Common Interface , czy nadal słuszne jest mówienie o kowariancji/kontrawariancji w odniesieniu do konwersji generyków e typy? Czy to inna koncepcja?
Czy istnieje nazwa tego pojęcia? Czy jest to inny rodzaj ogólnej wariancji? – StuperUser