2015-03-29 2 views
-2

Ошибка:IEnumerable <IAppointment> вызывает 11 ошибок в классе Appointments.cs

'Calendar.Appointments' does not implement interface member 'System.Collections.Generic.ICollection.CopyTo(Calendar.IAppointment[], int)'

также же для добавления, ясно, граф, IsReanOnly, Удалить, IndexOf и т.д. ...

Определение является:

  • Его следует называть «Назначения», и он должен иметь пустой конструктор.
  • Он должен реализовать интерфейс IAppointments.

Интерфейс IAppointments выглядит следующим образом:

public interface IAppointments : IList<IAppointment> 
{ 
    bool Load(); 
    bool Save(); 
    IEnumerable<IAppointment> GetAppointmentsOnDate(DateTime date); 
} 

Интерфейс IAppointment выглядит следующим образом:

public interface IAppointment 
{ 
    DateTime Start { get; } 
    int Length { get; } 
    string DisplayableDescription { get; } 
    bool OccursOnDate(DateTime date); 
} 

Поскольку класс, который реализует IAppointments должны также реализовывать IList<IAppointment> (из определения интерфейс выше), вы можете подумать о внедрении класса Appointments в качестве подкласса класса, который реализует nts IList<IAppointment> - например, List<IAppointment>.

я писал:

public class Appointments : IAppointments 
{ 
    List<IAppointment> list = null; 

    public bool Load() 
    { 
     bool flag = false; 
     GetEnumerableList(list); 
     return flag; 
    } 

    public bool Save() 
    { 
     bool flag = false; 

     return flag; 
    } 

    public IEnumerable<IAppointment> GetAppointmentsOnDate(DateTime day) 
    { 
     List<IAppointment> day_list = new List<IAppointment>(); 

     foreach (var item in list) 
     { 
      if (item.Start == day) day_list.Add(item); 
     } 

     return day_list; 
    } 

    public List<IAppointment>  
    GetEnumerableList(IEnumerable<IAppointment> Enumerable) 
    { 
     foreach (var item in Enumerable) 
     { 
      list.Add(item); 
     } 
     return list; 
    } 

и

public class Appointment : IEnumerable<IAppointment>, IAppointment 
    { 
     public DateTime Start { get; set; } 
     public int Length { get; set; } 
     public string DisplayableDescription { get; set; } 

     public bool OccursOnDate(DateTime date) 
     { 
     return false; 
     } 

     IEnumerator<IAppointment> IEnumerable<IAppointment>.GetEnumerator() 
     { 
      throw new NotImplementedException(); 
     } 

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

но не повезло, и я не путаюсь. Пожалуйста, помогите мне, как я буду использовать IEnumerated<IAppointment> в Appoinments или Appointment и наследовать его? Я считаю, что я не внедряю и не наследую правильно IAppointment и IAppointments с моими Appointment и Appointments.

+2

Из-за внешнего вида я не думаю, что вам нужно наследовать от 'IList ' или 'IEnumerable ' для 'IAppointments' и' Appointment' соответственно. В противном случае проясните свои требования. – bittusarkar

+0

Спасибо, бскаркар! Я оставляю открытый класс Назначение: IAppointment и открытый класс. Назначения: IAppointments, не наследуя IEnumerable , но я все еще получаю ошибки, которые я упоминаю в своем сообщении. – Konstantinos

+0

@ Konstantinos Обычно [минимальный пример кода] (http://stackoverflow.com/help/mcve), необходимый для отображения проблемы, должен содержаться в самом вопросе. Любые ссылки на полный код, содержащийся в другом месте, могут считаться полезными, но они по-прежнему являются второстепенными и служат лишь для предоставления дополнительного контекста. Поэтому, если вы что-то изменили и все еще не сработали, либо отредактируйте свой вопрос (http://stackoverflow.com/posts/29331231/edit), либо, потратив некоторое время на поиск и оценку, опубликуйте новый, если проблема принципиально другая. –

ответ

0

Объявите класс назначений в

public class Appointments : List<IAppointment>, IAppointments 

и удалить

List<IAppointment> list = null; 

Изменения list для this в текущей реализации.