无法引用方法 属性

Can't reference a method property

我正在尝试调用函数

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 是 class 中的一个变量,其中包含 Group 对象列表和更多内容。

群组也是 class 商店的子class。

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

抱歉,如果我 post 提供的信息太少,如果需要,我可以 post 更多。谢谢!

您不能将不同类型的通用集合分配给彼此! 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()

让你的 List<Store> 成为 IEnumerable<Store>

之所以你的List<StoreDerivedClass>不是List<Store>,而你的IEnumerable<StoreDerivedClass> 一个 IEnumerable<Store>Co- and Contravariance.

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

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

假设您使用的是 C# 4 或更高版本以及 .NET 4 或更高版本,因此您可以使用 IEnumerable<T> 的协方差。