从List中进行IEnumerable Class Collection类型转换

时间:2015-10-18 02:02:32

标签: c# class ienumerable

我正在尝试了解IEnumerable集合。我有一个基本的WorkOrder类,我想为它创建一个集合类。

WorkOrder.cs

public class WorkOrder
{
    public string WONumber { get; private set; }
    public string WIP { get; private set; }

    public WorkOrder()
    {
        WONumber = "384327";
        WIP = "3483";
    }
}

我已经开始收集课程,但我在this.workorders.GetEnumerator()收到错误。它告诉我它无法将List转换为枚举器。

public class WorkOrderCollection : IEnumerable<WorkOrder>
{
    private List<WorkOrder> workorders = new List<WorkOrder>();

    public IEnumerable<WorkOrder> GetEnumerater() 
    { 
        return this.workorders.GetEnumerator(); 
    }

    public WorkOrderCollection()
    {
    }

    public void Add(WorkOrder aWorkOrder)
    {
       workorders.Add(aWorkOrder);
    }

    public void Remove(int index)
    {
        if (index > workorders.Count - 1 || index < 0)
    {
        System.Windows.Forms.MessageBox.Show("Index not valid!");
    }
    else
    {
        workorders.RemoveAt(index);
    }
}

我不完全理解这一点。我需要做什么才能进行转换?

1 个答案:

答案 0 :(得分:2)

不应该是:

public IEnumerable<WorkOrder> GetEnumerater() 
{ 
    return this.workorders.GetEnumerator(); 
}

public IEnumerator<WorkOrder> GetEnumerater() 
{ 
    return this.workorders.GetEnumerator(); 
}

IEnumerator而不是IEnumerable作为返回类型。

我不知道你的用例,但为什么不简单?:

public class WorkOrderCollection : List<WorkOrder>
{
}