这很奇怪,我正在尝试在构造函数中使用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?)
我看不出两者之间的区别。我疯了,想弄清楚这一点。有什么想法吗?
答案 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)
您的CateringItems
是BookedCateringItem
的集合,在初始化时,您初始化了CateringItem
列表。
显然他们不兼容......
答案 3 :(得分:0)
您希望将List<CateringItem>
分配给ICollection<BookedCateringItem>
所以您不能。{/ p>