我坚持使用以下代码:
我有一个Model OrderList,它只包含以下内容:
public class OrderList : List<Tuple<Bagel, BagelType, int>>
{
}
在我的控制器中,我想创建一个新的OrderList,并用函数填充它:
public ActionResult OrderReport()
{
OrderList lstitems = FillBagelCart2();
return ViewPdf("Order report", "ReportView",lstitems);
}
FillBagelCart2 returns a List<Typle<Bagel, BagelType, int>>
错误是:
错误14无法隐式转换类型'System.Collections.Generic.List&gt;'到'BestelBagels.Models.OrderList'。存在显式转换(您是否错过了演员?)
不知道为什么这不起作用..
迎接
已经有效了!我必须创建一个返回订单列表的函数,填充类似该列表的值。可以关闭
答案 0 :(得分:2)
虽然你可以隐式地从OrderList
强制转换为List<Tuple<Bagel,BagelType,int>>
,因为它继承了它,你不能向相反的方向投射,因为OrderList
可能包含方法和属性基本列表没有实现。
您需要将FillBagelCart2
的返回类型更改为OrderList
,或者为OrderList类提供相应的构造函数,以允许它获取现有集合。
public class OrderList : List<Tuple<Bagel, BagelType, int>>
{
public OrderList() : base() {}
public OrderList(IEnumerable<List<Tuple<Bagel,BagelType,int>> items) : base(items) {}
}
然后你可以做
OrderList lstitems = new OrderList(FillBagelCart2());