在c#中实现GetEnumerator()

时间:2014-02-18 09:47:47

标签: c# asp.net-mvc

我有几个类,其中一个继承自mvc应用程序中的IEnumerable。 当我传递模型时,我收到异常“方法或操作未实现”。 我在网络上的搜索不是我的基础设施

这些类属于dll

public class Raflle : Base
    {
        public string RaflleNumber { get; set; }

        public DateTime RaflleDate { get; set; }

        public bool IsNear { get; set; }
    }

public class Raflles : IEnumerable<Raflle>
    {
        public List<Raflle> TList { get; private set; }

        public Raflles()
        {
            TList = new List<Raflle>();
        }
        public void Add(Raflle item)
        {
            TList.Add(item);
        }

        public IEnumerator<Raflle> GetEnumerator()
        {
            throw new NotImplementedException();
        }

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            throw new NotImplementedException();
        }
    }

这个类在mvc应用程序中

 public class RafllesModel
    {
        public int ID { get; set; }

        public string RaflleNumber { get; set; }

        public DateTime RaflleDate { get; set; }

        public bool IsNear { get; set; }
    }



public class RafllesController : Controller
    {
        MainLogic ml = new MainLogic();
        //
        // GET: /Raflles/

        public ActionResult Index()
        {
            var raffles = ml.GetRaflles();
            IEnumerable<RafllesModel> rafflesModel;
            rafflesModel = raffles.Select(x => new RafllesModel 
            { 
                ID = x.ID, 
                RaflleNumber = x.RaflleNumber, 
                RaflleDate = x.RaflleDate, 
                IsNear = x.IsNear 
            });
            return View(rafflesModel);
        }
    }

当然,我希望视图的行为如下:

@model IEnumerable<BackOffice.Models.RafllesModel>

我猜我有一些事情我做错了,我想知道GetEnumerator()应该做什么。

谢谢 丹尼

1 个答案:

答案 0 :(得分:0)

假设ml.GetRaflles();返回Raffles类的实例:您可以返回列表的枚举器:

   public IEnumerator<Raflle> GetEnumerator()
        {
            return TList.GetEnumerator();
        }

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

或者,由于List是公共属性,您可以跳过实现,直接使用List:rafflesModel = raffles。 TList .Select(..el

rafflesModel = raffles.TList.Select(x => new RafllesModel 
            { 
                ID = x.ID, 
                RaflleNumber = x.RaflleNumber, 
                RaflleDate = x.RaflleDate, 
                IsNear = x.IsNear 
            });
相关问题