사용자가 원하는 유형의 목록을 반환하는 메서드를 만들려고합니다. 이렇게하려면 제네릭을 사용하고 있습니다. 익숙하지 않아서이 질문이 명백 할 수 있습니다. 문제는이 코드가 작동하지 않는다는 것입니다 및 오류 메시지를 Cannot convert type Systems.Collections.Generic.List<CatalogueLibrary.Categories.Brand> to Systems.Collection.Generic.List<T>
IList를 사용할 수 있지만 일반 메서드의 List는 사용할 수 없습니다.
private List<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (List<T>)collection.Brands.ToList<Brand>();
}
...
}
을 던졌습니다하지만 대신 IList
를 사용하는 경우, 오류가 없습니다.
private IList<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (IList<T>)collection.Brands.ToList<Brand>();
}
...
}
이 경우 목록이 아닌 IList를 사용할 수 있습니까? collection.Brands는 제 3 자 라이브러리에서 BrandCollection
유형을 반환하므로 그 생성 방법을 알 수 없습니다. BrandCollection
은 IList에서 파생 될 수 있으며 (그러면 그냥 추측 할 수 있습니다.) 따라서 일반 List가 아닌 IList로 변환 될 수 있습니까?
거기에 유형 제약 조건을 넣어야합니다! 빌어 먹을 물건을 빌려줄 필요가 없습니다. – antonijn
두 번째 예제는'return (IList) 컬렉션이 아닙니다 .Brands.ToList ();'? –
Matthew
나는이 일이 끝난 후에 살펴 보려고했다. 나는 제네릭에 조금 익숙해 져서 나중에 다른 것을 부러 뜨릴 경우를 대비해서 그 것을 떠날 것이라고 생각했다 : D 제약 조건은'어디에 T : 브랜드'(및 다른 카테고리)가 될 것인가? – XSL