C# 从列表转换IEnumerable类集合类型

C# 从列表转换IEnumerable类集合类型,c#,class,ienumerable,C#,Class,Ienumerable,我试图理解IEnumerable集合。我有一个基本的工单课程,我想为它做一个收集课程 WorkOrder.cs public class WorkOrder { public string WONumber { get; private set; } public string WIP { get; private set; } public WorkOrder() { WONumber = "384327"; WIP = "34

我试图理解IEnumerable集合。我有一个基本的工单课程,我想为它做一个收集课程

WorkOrder.cs

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

    public WorkOrder()
    {
        WONumber = "384327";
        WIP = "3483";
    }
}
我已启动collection类,但在
this.workorders.GetEnumerator()中遇到错误。
。它告诉我它无法将列表转换为枚举数

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);
    }
}
公共类WorkOrderCollection:IEnumerable
{
私有列表工单=新列表();
公共IEnumerable GetEnumerator()
{ 
返回此.workorders.GetEnumerator();
}
公共工作订单集合()
{
}
公共作废添加(工单A工单)
{
工单。添加(工单);
}
公共无效删除(整型索引)
{
如果(索引>工作顺序.计数-1 | |索引<0)
{
System.Windows.Forms.MessageBox.Show(“索引无效!”);
}
其他的
{
工作指令。删除(索引);
}
}
我不完全理解这一点。我需要做些什么来转换它?

它不应该是:

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

你应该参考这篇文章:除此之外,我可以问一下你为什么要自己构建一个集合类吗?为什么不直接使用
列表呢?你的集合除了简单地委托一切之外没有什么作用。我正在试图找出什么是最佳实践。对每个人来说(列表与IEnumerable)有什么好处?通过继承
列表
减少代码。如果不需要列表的功能,如获取每个索引的值、添加新值等,但您使用的是列表内部的列表,而您的类只是内部列表的包装器,实现
IEnumerable
,那么您应该使用
IEnumerable
例如,我看不出隐藏列表功能的理由,当您需要它们时,必须编写另一个包装器方法。不知道用例-我会继承列表,正如您所看到的,我不清楚类的集合方面。我已经将其组合在一起。我不清楚如何做。当涉及到testin时g最好在您的类型上使用尽可能少的方法。如果您扩展
List
,您可能需要模拟许多方法,以便正确测试代码。此外,它将访问代码与特定实现紧密耦合。
public IEnumerator<WorkOrder> GetEnumerater() 
{ 
    return this.workorders.GetEnumerator(); 
}
public class WorkOrderCollection : List<WorkOrder>
{
}