制作IEnumerable类时出错

时间:2013-12-03 05:28:20

标签: c# linq inheritance ienumerable farpoint-spread

我正在尝试继承FarPoint.Win.Spread.FpSpread类并实现IEnumerable<FarPoint.Win.Spread.Row>,以便我能够在FarPoint传播行或单元格上应用linq。我试过多种方法,但我一直都会遇到错误:

class myspread : FarPoint.Win.Spread.FpSpread, IEnumerable<FarPoint.Win.Spread.Row>
{
    public IEnumerator<FarPoint.Win.Spread.Row> GetEnumerator()
    {
        return myspread.GetEnumerator();// Error on this line
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

第二次尝试:

class myspread : FarPoint.Win.Spread.Row, IEnumerable<FarPoint.Win.Spread.Row>
{
    public IEnumerator<FarPoint.Win.Spread.Row> GetEnumerator()
    {
        return myspread.GetEnumerator();// Error on this line
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

第三次尝试:

class myspread : FarPoint.Win.Spread.Cells, IEnumerable<FarPoint.Win.Spread.Cells>
{
    public IEnumerator<FarPoint.Win.Spread.Row> GetEnumerator()
    {
        return myspread.GetEnumerator();// Error on this line
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

我希望能够在FarPoint工作表上的很多对象上应用linq

现在上面的数据可能是lacs - 我需要对上面的数据做很多格式化并在某些条件下更新值。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

在所有情况下,您都指出以下行生成错误:

return myspread.GetEnumerator();// Error on this line

在不了解您的代码的情况下,我们无法真正了解到这一点。看起来你试图在GetEnumerator类上静态调用myspread方法,这可能不是你想要它做的。

我假设您希望您的类提供活动工作表中行的枚举。查看文档here,特别是Rows collection的文档,我会猜测它的外观:

class myspread : FarPoint.Win.Spread.FpSpread,
    IEnumerable<FarPoint.Win.Spread.Row>
{
    public IEnumerable<FarPoint.Win.Spread.Row> GetEnumerator()
    {
        var rows = ActiveSheet.Rows;
        for (int i = 0; i < rows.Count; ++i)
            yield return rows.Item[i];
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

当然,如果Rows集合已实施IEnumerable<Row>,那么这只是一个问题:

    public IEnumerable<FarPoint.Win.Spread.Row> GetEnumerator()
    {
        return ActiveSheet.Rows;
    }

FarPoint文档并未表明对集合中IEnumerable<Row>的任何支持。