Я сейчас читаю Ковариацию и Контравариантность в C #.
Все примеры содержат сведения об объектах, которые могут быть преобразованы, и отличаются из-за точности реализации интерфейса, например,
Где Circle : IShape
Ковариация: SomeType<Circle> as SomeType<IShape>
Контравариантность: SomeType<IShape> as SomeType<Circle>
Если TypeA
и TypeB
каждый имеет implicit converter
, записанный для преобразования в другой тип, но не реализует какой-либо общий интерфейс , все еще правильно говорить о ковариации / контравариантности, когда имеем дело с преобразованием дженериков этих типов? Или это другая концепция?