我必须开发一个自定义的对象集合。原因有两个,我需要能够为集合分配一个内部名称,集合还需要实现一些抽象方法,就像我拥有的任何其他实体一样。
所以我创建了一个EntityList类。以下是该课程的片段。它包含一个id和一个实体列表,以及一堆方法。我的问题是,到目前为止,我已经提出了我需要的列表管理方法,例如Add,Insert,Remove和Clear。如果您有一个名为myEntityList的EntityList引用,则可以执行类似myEntityList.Add(newEntity)的操作。我确实喜欢这种方法,但实际上这些方法只是将工作交给列表。我也无法实现任何这些方法,您可以使用myEntityList.Items.Add(newEntity)执行与上面相同的操作。但是,您在这里直接访问对象属性的方法。我想完全删除Items属性,但是我经常需要使用foreach迭代列表,为此我需要访问实际列表。
这是我的类定义,它没有包含的抽象方法的覆盖。
class EntityList
{
String entityId;
List<EntityBase> _entities;
public EntityList()
{
_entities = new List<EntityBase>();
}
public List<EntityBase> Items
{
get { return _entities; }
//set { _entities = value; }
}
public void Add(EntityBase entity)
{
_entities.Add(entity);
}
public void Insert(int index, EntityBase entity)
{
_entities.Insert(index, entity);
}
public void Remove(EntityBase entity)
{
_entities.Remove(entity);
}
public void Clear()
{
_entities.Clear();
}
}
我是否违反了一些基本规则?当它是另一个类的成员时,我该如何管理列表呢?
答案 0 :(得分:1)
只需从List<EntityBase>
继承,您就不需要重新声明并实施列表方法。
即
class EntityList : List<EntityBase>
{
String entityId;
//add your extra methods.
}
答案 1 :(得分:0)
你应该以这种方式使你的类实现IList<EntityBase>
(或至少IEnumerable<EntityBase>
),你可以像对待“普通”列表一样对待它。但是,在您这样做之前,您应该阅读文档并确定最适合您需求的文档。