我想創建一個方法,它返回用戶想要的任何類型的列表。要做到這一點,我使用的泛型,我不太熟悉,所以這個問題可能很明顯。問題是,這個代碼不工作,並引發錯誤消息Cannot convert type Systems.Collections.Generic.List<CatalogueLibrary.Categories.Brand> to Systems.Collection.Generic.List<T>
可以使用IList但不是列表中的泛型方法
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而不是List? collection.Brands從第三方庫中返回一個BrandCollection
類型,所以我不知道它是如何創建的。難道BrandCollection
可能來自IList(只是猜測它確實),所以它可以轉換爲它,但不是正常的列表?
你應該把類型約束放在那裏!你不能只是圍繞着鑄造東西。 – antonijn 2013-03-24 20:17:17
你確定你的第二個例子不是'return(IList)collection.Brands.ToList ();'? –
Matthew
2013-03-24 20:18:13
我打算在這個工作後看看。我對泛型有點新,所以我認爲在後面的情況下它會破壞別的東西:D約束條件是'T:品牌'(和其他類別)嗎? – XSL 2013-03-24 20:18:30