C# 类内列表继承自接口-是否从类内添加到列表?

C# 类内列表继承自接口-是否从类内添加到列表?,c#,inheritance,ienumerable,ilist,C#,Inheritance,Ienumerable,Ilist,请原谅这个糟糕的标题,我不能用几句话来解释我的问题。我正在尝试在一些粗略的指导原则下制作一个简单的日历应用程序,这些指导原则让我走到了这一步 我有一个名为Apts的类,继承自一个接口IApts,该接口本身继承自另一个接口IApt。我的代码如下: IApts _Appointments = new Apts(); IApt IApts 我现在想做两件事。我想从IApt类型的主窗体中添加项(这可能吗?:S)。我还希望在创建实例后,能够从mainForm调用我的Load()方法,以便用内容将来自简单

请原谅这个糟糕的标题,我不能用几句话来解释我的问题。我正在尝试在一些粗略的指导原则下制作一个简单的日历应用程序,这些指导原则让我走到了这一步

我有一个名为Apts的类,继承自一个接口IApts,该接口本身继承自另一个接口IApt。我的代码如下:

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
}