我有两个接口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到目前为止,谢谢你们的帮助!
答案 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