Próbuję utworzyć metodę, która zwraca listę dowolnego typu użytkownik chce. Aby to zrobić, używam generycznych, których nie znam zbyt dobrze, więc to pytanie może być oczywiste. Problemem jest to, że ten kod nie działa i generuje komunikat o błędzie Cannot convert type Systems.Collections.Generic.List<CatalogueLibrary.Categories.Brand> to Systems.Collection.Generic.List<T>
Może używać IList, ale nie Lista w ogólnej metodzie
private List<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (List<T>)collection.Brands.ToList<Brand>();
}
...
}
Ale jeśli mogę użyć IList
zamiast istnieją żadne błędy.
private IList<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (IList<T>)collection.Brands.ToList<Brand>();
}
...
}
Dlaczego mogę używać IList, ale nie List w tym przypadku? collection.Brands zwraca typ BrandCollection
z biblioteki innej firmy, więc nie wiem, jak to się stało. Czy to możliwe, że BrandCollection
może pochodzić z IList (po prostu zgaduje, że tak) i dlatego można go przekonwertować, ale nie na normalną listę?
Powinieneś umieścić ograniczenia typu tam na oficera! Nie możesz tak po prostu chodzić, rzucając coś niedobrze. – antonijn
Czy jesteś pewien, że twój drugi przykład nie jest zbiorem "return (IList). Brands.ToList ();"? –
Matthew
Zamierzałem się przyjrzeć, jak to zadziałało. Jestem trochę nowy dla leków generycznych, więc pomyślałem, że zostawię to na później, na wypadek, gdyby złamał coś innego: D Czy przymus byłby "gdzie T: Brand" (i inne kategorie)? – XSL