无法引用方法属性

时间:2015-08-07 11:34:16

标签: c# asp.net-mvc methods properties polymorphism

我试图调用一个函数

NextPrevious((List<Store>)model.Group.ToList(), 3, groupPage.Value, ref next, ref previous);

方法定义为..

private void NextPrevious(List<Store> model, int numFields, int page, ref bool nextRef, ref bool previousRef)
{
    ...
}

但是我得到一个无法转换Group to Store错误。 model是一个包含Group对象列表的类的变量。

Group也是Store类的子类。

我只检查方法中的基本List<>内容,例如method.Countmethod.Skip(),所以如果有更简单的方法可以做到这一点,我就是&#39 ;所有的耳朵,我没有调用任何特定的商店或集团方法。

很抱歉,如果我发布的信息太少,我可以根据需要发布更多信息。谢谢!

3 个答案:

答案 0 :(得分:3)

<table> <tr> @foreach (var item in Model) { <td> @Html.DisplayFor(modelItem => item.courseName) <br> @Html.DisplayFor(modelItem => item.courseSubject) </td> } </tr> </table> 不是List<Group>。但是,您可以使用List<Store>方法的类型参数来创建ToList而不是:

List<Store>

假设您使用的是C#4或更高版本以及.NET 4或更高版本,那么您可以使用NextPrevious(model.Group.ToList<Store>(), ...) 的协方差。

答案 1 :(得分:1)

您无法为彼此分配不同类型的通用集合! List<Class> = List<Subclass>因为这些集合的类型不同!

如果您100%确定model.Group仅包含Store类型的元素,则可以执行此操作model.Group.Select(x => (Store)x).ToList()model.Group.OfType<Store>().ToList()

如果您不确定model.Group.Where(x => x is Store).Select(x => (Store)x).ToList()

答案 2 :(得分:0)

List<Store>成为IEnumerable<Store>

List<StoreDerivedClass> <{1}} <{1}},List<Store> IEnumerable<StoreDerivedClass>的原因是IEnumerable<Store> Co- and Contravariance