在Dictionary中包含多个列表

时间:2011-08-16 16:55:45

标签: c# list .net-4.0 idictionary

我有一个ObjectBatch类,如下所示:

[Serializable]    
class ObjectBatch : IDictionary<string, IObjModel>
    {
        List<Tuple<string, IObjModel>> ModelATypes;
        List<Tuple<string, IObjModel>> ModelBTypes;
        List<Tuple<string, IObjModel>> ModelCTypes;

        /* IDictionary implementations follow */
    }

此类独自负责根据IObjModel的属性添加/删除,修改列表。 这是一个糟糕的设计吗? 感觉对我很好;但是,既然我之前没有看过这样的实现,我只是想知道这是不是很糟糕,如果是这样,为什么呢?

修改
假设强制执行唯一字符串(但在更高级别)并且IObjModel具有复合性质(在更高级别组成)。另外,请注意添加Serializable属性 - 我最初忘记了这一点。

该类基本上保存了各个集合的元素。用户无法访问此类。它是一个内部存储对象。

1 个答案:

答案 0 :(得分:1)

这可以作为对象组合,但不应该从Dictionary继承。它的目的是什么?如果您希望用户使用键搜索此对象,它将从3个列表中的哪一个返回?如果键或对象是对记录类型的自描述,为什么要将它们存储在不同的列表中?

ObjectBatch[key] <-- get from A or B or C?
Add(IobjectModel) <-- will add to which list?