Class 内的列表从接口继承 - 从 class 内添加到列表?
List inside Class Inheriting from Interfaces - Add to list from within class?
请原谅糟糕的标题,不能用这么少的话来解释我的问题。我正在尝试根据一些粗略的指导方针制作一个简单的日历应用程序,这些指导方针让我走到了这一步。
我有一个名为 Apts 的 class,继承自接口 IApts,它本身继承自另一个接口 IApt。我的代码如下:
IApt
public interface IApt
{
DateTime Start { get; }
int Length { get; }
string Description{ get; }
bool Occurs(DateTime date);
}
IApts
public interface IApts : IList<IApt>
{
bool Load();
bool Save();
IEnumerable<IApt> GetAptsOnDate(DateTime date);
}
Apts (当然要减到最少)
class Apts: IApts
{
public List<IApt> myAppointments = new List<IApt>();
public Apts()
{
// Constructor must be empty - guideliness
}
public bool Load()
{
//Code to load appointment data from file to variables below
string startTime = x;
string lengthTime = y;
string description = z;
IApt loadedAppointment = new IApt(aptStartDate, aptLength, aptDescription);
myAppointments.Add(loadedAppointment);
}
#IList Methods
#IEnumerable Methods
}
希望我的代码片段能让您了解我在这里要实现的目标。我将从我的 mainForm 创建一个 Apts class 的实例,以便按如下方式保留我的所有约会:
IApts _Appointments = new Apts();
我现在想做两件事。我想从我的 IApt 类型的 mainForm 添加项目(这甚至可能吗?:S)。我还希望在我创建实例后能够从我的 mainForm 调用我的 Load() 方法,以便用内容将来自简单文本文件存储的约会填充列表 myAppointments。
有人可以告诉我我正在尝试做的事情是否可行吗?其他一切都已就绪,我只需要能够访问创建 Apts 实例时创建的列表,并向其添加 IApt 类型的 objects。
或者创建另一个 class 是否有意义,也许命名为 Apt,因为创建一个新的 object 类型的 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;}
实现这个接口例如:
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 成员通常是 UpperCamelCase 并且 private 以 _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
}
顺便说一句,您可能想将 myAppointments
设为私有。 public.
你暴露的太多了
请原谅糟糕的标题,不能用这么少的话来解释我的问题。我正在尝试根据一些粗略的指导方针制作一个简单的日历应用程序,这些指导方针让我走到了这一步。
我有一个名为 Apts 的 class,继承自接口 IApts,它本身继承自另一个接口 IApt。我的代码如下:
IApt
public interface IApt
{
DateTime Start { get; }
int Length { get; }
string Description{ get; }
bool Occurs(DateTime date);
}
IApts
public interface IApts : IList<IApt>
{
bool Load();
bool Save();
IEnumerable<IApt> GetAptsOnDate(DateTime date);
}
Apts (当然要减到最少)
class Apts: IApts
{
public List<IApt> myAppointments = new List<IApt>();
public Apts()
{
// Constructor must be empty - guideliness
}
public bool Load()
{
//Code to load appointment data from file to variables below
string startTime = x;
string lengthTime = y;
string description = z;
IApt loadedAppointment = new IApt(aptStartDate, aptLength, aptDescription);
myAppointments.Add(loadedAppointment);
}
#IList Methods
#IEnumerable Methods
}
希望我的代码片段能让您了解我在这里要实现的目标。我将从我的 mainForm 创建一个 Apts class 的实例,以便按如下方式保留我的所有约会:
IApts _Appointments = new Apts();
我现在想做两件事。我想从我的 IApt 类型的 mainForm 添加项目(这甚至可能吗?:S)。我还希望在我创建实例后能够从我的 mainForm 调用我的 Load() 方法,以便用内容将来自简单文本文件存储的约会填充列表 myAppointments。
有人可以告诉我我正在尝试做的事情是否可行吗?其他一切都已就绪,我只需要能够访问创建 Apts 实例时创建的列表,并向其添加 IApt 类型的 objects。
或者创建另一个 class 是否有意义,也许命名为 Apt,因为创建一个新的 object 类型的 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;}
实现这个接口例如:
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 成员通常是 UpperCamelCase 并且 private 以 _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
}
顺便说一句,您可能想将 myAppointments
设为私有。 public.