C#属性访问与接口实现

C#属性访问与接口实现,c#,inheritance,collections,C#,Inheritance,Collections,我正在编写一个类来表示一个集合,即Pivot识别的根对象。集合具有多个属性、一个刻面类别列表(每个由facetcography对象表示)和一个项目列表(每个由PivotItem对象表示)。因此,一个极其简化的集合如下: public class PivotCollection { private List<FacetCategory> categories; private List<PivotItem> items; // other attri

我正在编写一个类来表示一个集合,即Pivot识别的根对象。集合具有多个属性、一个刻面类别列表(每个由
facetcography
对象表示)和一个项目列表(每个由
PivotItem
对象表示)。因此,一个极其简化的集合如下:

public class PivotCollection
{
    private List<FacetCategory> categories;
    private List<PivotItem> items;
    // other attributes
}
最后,第三个选项是组合选项1和选项2,以便
PivotCollection
实现
IList
,并具有一个属性
facetcontegories


问题:这三个选项中哪一个最合适,为什么?

这里最好的做法是创建自己的集合类,该类继承并重写
插入项

您不应该创建名为
集合
的类。选择一个更具体的名称。编辑为
PivotCollection
-这样会更好吗?因为它不是(直接)对象的集合,它可能不应该以
集合
结尾。名称来自:每个类映射到相应的XML实体-
PivotItem
FacetCategory
Facet
,等等
public class PivotCollection
{
    private class CategoryList: IList<FacetCategory>
    {
        // ...
    }

    private readonly CategoryList categories = new CategoryList();
    private readonly ItemList items = new ItemList();

    public CategoryList FacetCategories
    {
        get { return categories; }
        set { categories.Clear(); categories.AddRange(value); }
    }

    public ItemList Items
    {
        get { return items; }
        set { items.Clear(); items.AddRange(value); }
    }
}