如何在C类中实现接口#

时间:2014-04-27 18:23:23

标签: c# winforms visual-studio-2012

我有两个接口IAppointment and IAppointments : IList<IAppointment> 在第二堂课我有3名成员

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

其中我只能实现Appointments类中的前2个,并且我使用我为第3个尝试的任何方法得到错误并且我总是得到相同的14个错误(关于“约会没有实现接口成员IAppointment.GetEnumerator( ),。Count,。Remove,.Contains和其他一些

这也是另一个

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

这里我可能也需要在课堂上实现这些, 抱歉我的错误解释,但也许我还没有理解实际问题

P.S。接口/类都在另一个无错运行的部分类中使用

更新

我现在唯一的问题是我不知道如何实现IAppointment的第一个成员(它的返回类型是什么?因为它的预约开始时间,例如12:00)几乎其他一切都很好我想

P.S.2到目前为止,谢谢你们的帮助!

2 个答案:

答案 0 :(得分:1)

由于您的IAppointments接口派生自IList<T>,因此您的Appointments类必须实现IList<T> 的所有成员和该接口派生的所有接口从。 GetEnumerator()来自IEnumerable<T>IList<T>来自。{/ p>

除非您使用诸如组合之类的方法,在IList<T>上公开IAppointments属性以获取执行索引等操作的列表,否则您将需要实现所有成员IList<T>课程中的ICollection<T>IEnumerable<T>Appointments

我认为你最好的解决方案就是这样:

public interface IAppointments
{
    IList<IAppointment> TheAppointments { get; }

    bool Load();
    bool Save();
    IEnumerable<IAppointment> GetAppointmentsOnDate(DateTime date);
}

然后,您将访问TheAppointments课程中的Appointments媒体资源,以提供GetAppointmentsOnDate(DateTime)实施的基础。

答案 1 :(得分:0)

如注释中所述,您不仅可以为接口实现一组特定的方法,而且IAppointments接口派生自IList<IAppointment>,实现类还必须实现{{{}的所有成员。 1}}接口以及IList的成员。

以下类定义将实现此目的:

IAppointments

这将允许您访问using System.Collections.ObjectModel; public class Appointments : Collection<IAppointment>, IAppointments { public bool Load() { return true; } public bool Save() { return true; } public IEnumerable<IAppointment> GetAppointmentsOnDate(DateTime date) { return new List<IAppointment>(); } } 上的所有方法(因为IList实现Collection<T>)和IList<T>允许您编写如下代码(假设您的实现IAppointment的类称为IAppointment,我已经正确地确定了代码的意图):

Appointment