2014-02-18 2 views
-4

У меня есть несколько классов, которые один из них наследует от IEnumerable в приложении mvc. Когда я передаю модель, я получаю исключение «Метод или операция не реализованы». Non из моих поисков, через Интернет был моей инфраструктурыВнедрить GetEnumerator() в C#

Эти классы относятся к библиотеке 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().

Спасибо Дэнни

+0

Вы не реализованы методы, относящиеся к 'IEnumerable' –

+1

Почему о почему вы должны создать свой собственный перечислимы Просто используйте IEnumerable !! (BTW -.? Raflle должен быть raffle ?!) – SpaceBison

+0

Я знаю о пропуске. Я не хотел создавать свои собственные. Но поскольку я унаследовал от ienumerable, мне пришлось реализовать интерфейс – Danny

ответ

0

Допуская ml.GetRaflles(); возвращает экземпляр класса Raffles: Вы можете вернуть перечислитель из списка:

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

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

В качестве альтернативы, поскольку список является государственной собственностью, вы можете пропустить реализацию и использование списка непосредственно: rafflesModel = розыгрыши. TList .Select (..el

rafflesModel = raffles.TList.Select(x => new RafllesModel 
      { 
       ID = x.ID, 
       RaflleNumber = x.RaflleNumber, 
       RaflleDate = x.RaflleDate, 
       IsNear = x.IsNear 
      }); 
+0

Work's, спасибо. – Danny

Смежные вопросы