不能引用方法属性
本文关键字:属性 方法 引用 不能 | 更新日期: 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.Count
或method.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