Я бы не сказал, что Принцип замещения Лискова является "формой" ковариации, поскольку общая ковариация позволяет выражать LSP в общих отношениях.Начиная с C # 4 / .NET 4, вы можете рассматривать IEnumerable<Banana>
как IEnumerable<Fruit>
и должны иметь возможность делать это без каких-либо неприятных сюрпризов - чего, в основном, требует LSP.