C# 类内列表继承自接口-是否从类内添加到列表?
请原谅这个糟糕的标题,我不能用几句话来解释我的问题。我正在尝试在一些粗略的指导原则下制作一个简单的日历应用程序,这些指导原则让我走到了这一步 我有一个名为Apts的类,继承自一个接口IApts,该接口本身继承自另一个接口IApt。我的代码如下:C# 类内列表继承自接口-是否从类内添加到列表?,c#,inheritance,ienumerable,ilist,C#,Inheritance,Ienumerable,Ilist,请原谅这个糟糕的标题,我不能用几句话来解释我的问题。我正在尝试在一些粗略的指导原则下制作一个简单的日历应用程序,这些指导原则让我走到了这一步 我有一个名为Apts的类,继承自一个接口IApts,该接口本身继承自另一个接口IApt。我的代码如下: IApts _Appointments = new Apts(); IApt IApts 我现在想做两件事。我想从IApt类型的主窗体中添加项(这可能吗?:S)。我还希望在创建实例后,能够从mainForm调用我的Load()方法,以便用内容将来自简单
IApts _Appointments = new Apts();
IApt
IApts
我现在想做两件事。我想从IApt类型的主窗体中添加项(这可能吗?:S)。我还希望在创建实例后,能够从mainForm调用我的Load()方法,以便用内容将来自简单文本文件存储的约会填充列表MyAppointment
有没有人能告诉我,我想做的事情是否可行?其他一切都准备就绪,我只需要能够访问创建Apts实例时创建的列表,并向其中添加IApt类型的对象
或者创建另一个类(可能命名为Apt)有意义吗,因为创建Apts类型的新对象将创建另一个列表。。?我希望有人在跟踪我。。我头晕
public interface IApt
{
DateTime Start { set;get; }
int Length { set;get; }
string Description{ set;get; }
bool Occurs(DateTime date);
}
将此属性添加到接口IApts
List<IApt> myAppointments {set;get;}
然后
不希望对命名约定做出判断,只要它们在整个代码中保持不变,但公共成员通常是大写的,而私有成员则以_lowerCamelCase或lowerCamelCase作为前缀。您应该创建一个
Add
方法并实现它:
public interface IApts
{
bool Load();
bool Save();
void Add(IApt appointment);
IEnumerable<IApt> GetAptsOnDate(DateTime date);
}
class Apts: IApts
{
private List<IApt> myAppointments = new List<IApt>();
public void Add(IApt appointment)
{
this.myAppointments.Add(appointment);
}
// rest of class omitted for brevity
}
公共接口IApts
{
bool-Load();
bool Save();
无效添加(IApt任命);
IEnumerable GetAptsOnDate(日期时间日期);
}
班级Apts:IApts
{
私人列表MyAppoints=新列表();
公共无效添加(IApt任命)
{
this.myappoints.Add(约会);
}
//为了简洁起见,省略了课堂的其余部分
}
顺便说一下,您可能希望将
myappointment
设置为私有。你在公开场合暴露的太多了。你自己也试过吗?如果你指的是创建另一个类Apt,那么是的,我知道这是可能的,但我想知道这是否有必要,因为我正在研究的指导方针似乎表明只需要Apts类。我在这里是个新手,所以我希望有更多经验的人能给我指出正确的方向,这样我就知道我到目前为止所做的至少是正确的:)智能是一个糟糕的拼写检查,我承认visual studio intellisense。抱歉,如果听起来很粗鲁,Mybad lol。是否将列表MyAppoints{set;get;}添加到界面?或者他不想改变界面?谢谢,我的指导方针是错误的。创建Apt类就是解决方案!我会检查那些命名约定的哦!谢谢你的回答。我已经创建了一个add方法,因为我是从IList继承的,尽管我没有在上面明确说明IList方法都已经实现了。@Jamie4840那么为什么不调用add
方法来添加项呢?您确实应该对程序的其余部分隐藏类的实现。
public interface IApt
{
DateTime Start { set;get; }
int Length { set;get; }
string Description{ set;get; }
bool Occurs(DateTime date);
}
List<IApt> myAppointments {set;get;}
public class Apt : IApt
{
public DateTime Start { set;get; }
public int Length { set;get; }
public string Description{ set;get; }
public bool Occurs(DateTime date){
}
}
IApts _Appointments = new Apts();
IApt apt = new Apt();
apt.Start=...
apt.Length=...
_Appointments.myAppointments.Add(apt);
_Appointments.Load();
public interface IApts
{
bool Load();
bool Save();
void Add(IApt appointment);
IEnumerable<IApt> GetAptsOnDate(DateTime date);
}
class Apts: IApts
{
private List<IApt> myAppointments = new List<IApt>();
public void Add(IApt appointment)
{
this.myAppointments.Add(appointment);
}
// rest of class omitted for brevity
}