C#列表到ICollection

时间:2014-01-10 09:40:38

标签: c#

这很奇怪,我正在尝试在构造函数中使用List初始化我的ICollection,这种情况发生了:

Schedules = new List<BookingSchedule>(); //OK
CateringItems = new List<CateringItem>(); //Not

属性:

public virtual ICollection<BookingSchedule> Schedules { get; set; }
public virtual ICollection<BookedCateringItem> CateringItems { get; set; }

错误:

Error   1   Cannot implicitly convert type
'System.Collections.Generic.List<MyApp.Models.CateringItem>' to  
'System.Collections.Generic.ICollection<MyApp.Models.BookedCateringItem>'. 
An explicit conversion exists (are you missing a cast?)

我看不出两者之间的区别。我疯了,想弄清楚这一点。有什么想法吗?

4 个答案:

答案 0 :(得分:8)

如果类型T1和T2相同,则只能将List<T1>转换为ICollection<T2>。 或者,您可以转换为非通用ICollection

ICollection CateringItems = new List<CateringItem>(); // OK

答案 1 :(得分:3)

    public virtual ICollection<BookedCateringItem> CateringItems { get; set; }
    CateringItems = new List<CateringItem>();

它是不同的类型,BookedCateringItem和CateringItem。您需要将其中一个更改为另一个类型。

答案 2 :(得分:1)

您的CateringItemsBookedCateringItem的集合,在初始化时,您初始化了CateringItem列表。

显然他们不兼容......

答案 3 :(得分:0)

您希望将List<CateringItem>分配给ICollection<BookedCateringItem>所以您不能。{/ p>