不能引用方法属性

本文关键字:属性 方法 引用 不能 | 更新日期: 2023-09-27 18:06:46

我正在尝试调用一个函数

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)
{
    ...
}

但是我得到一个不能转换组到存储错误。model是一个类中的变量,它包含一个Group对象列表和其他一些对象。

Group也是Store类的子类。

我只检查方法中基本的List<>内容,如method.Countmethod.Skip(),所以如果有更简单的方法来做到这一点,我洗耳静听,我不会调用任何特定的Store或Group方法。

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

不能引用方法属性

List<Group>不是List<Store>。但是,您可以使用ToList方法的类型参数来创建List<Store>:

NextPrevious(model.Group.ToList<Store>(), ...)

这是假设你使用c# 4或更高版本和。net 4或更高版本,所以你可以使用IEnumerable<T>的协方差。

不能将不同类型的泛型集合相互赋值!List<Class> = List<Subclass>因为这些集合不是同一类型!

如果您100%确定该模型。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()

制作您的List<Store>IEnumerable<Store>

为什么你的List<StoreDerivedClass>而不是一个List<Store>,但是你的IEnumerable<StoreDerivedClass> IEnumerable<Store>是Co- and Contravariance