mam skonfigurować tak:nie można przekonwertować z listy <Bar> do listy <Foo>
abstract class Foo {}
class Bar : Foo {}
i sposób gdzie indziej tej postaci:
void AddEntries(List<Foo>) {}
próbuję wywołać tę metodę za pomocą lista obiektów typu Bar
List<Bar> barList = new List<Bar>()
AddEntries(barList);
ale to daje mi błąd:
cannot convert from List<Bar> to List<Foo>
Czy w ogóle istnieje ten problem? Muszę zachować definicję metody za pomocą klasy abstrakcyjnej.
Czy w C# mają składnię jak 'List rozszerza Foo> 'jak robi to Java? – dbush
@dbush Tak, wersja C# jest w zaakceptowanej odpowiedzi – Harrichael
@harrichael Chociaż w przeciwieństwie do Java, C# obsługuje ogólną kowariancję, więc istnieje jeszcze lepsza opcja (patrz odpowiedź Roba) –