【问题标题】:Error during a simple typecast简单类型转换期间的错误
【发布时间】:2013-12-25 03:30:51
【问题描述】:

我已经做了一个自定义类:

class fpCellEnum : FarPoint.Win.Spread.Cell, IEnumerable<FarPoint.Win.Spread.Cell>
{
    public IEnumerable<FarPoint.Win.Spread.Cell> AsEnumerable<TSource>(this IEnumerable<FarPoint.Win.Spread.Cell> source)
    {
        return source;
    }
}

我需要上面的类,以便我可以在 FarPoint 表的单元格上使用 Linq。但我在这段代码中收到以下错误:

fpCellEnum fp = new fpCellEnum();
IEnumerator<fpCellEnum> iEnCells = ((fpCellEnum)fpSpread1.ActiveSheet.Cells[0,0,fpSpread1.ActiveSheet.Rows.Count,fpSpread1.ActiveSheet.Columns.Count]).AsEnumerable<FarPoint.Win.Spread.Cell>();

无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.IEnumerator”。存在显式转换(您是否缺少演员表?)

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 你的意思是IEnumerable&lt;fpCellEnum&gt;
  • 1) 这不是扩展方法的工作方式。 2)我认为你误解了一些关于泛型的东西。 3) 真的不清楚您希望如何将Cell 转换为fpCellEnum
  • 当包含的类已经是返回类型时,为什么还需要AsEnumerable&lt;TSource&gt;() 方法(而且你根本不使用泛型TSource)?

标签: c# linq c#-4.0 inheritance type-conversion


【解决方案1】:

IEnumerable 和 IEnumerator 不一样。您可以使用 .GetEnumerator() 方法从 IEnumerable 获取 IEnumerator。

IEnumerator<fpCellEnum> iEnCells = ((fpCellEnum)fpSpread1.ActiveSheet.Cells[0,0,fpSpread1.ActiveSheet.Rows.Count,fpSpread1.ActiveSheet.Columns.Count]).AsEnumerable<FarPoint.Win.Spread.Cell>().GetEnumerator();

但是,对于如何在泛型中将Cell 转换为fpCellEnum,您有一个更大的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多