包含要存储在Dictionary中的实例化类列表的类的结构

时间:2015-03-03 09:17:09

标签: c# list class dictionary structure

对于我要存储的示例类,可以说:

class Race
{
    public string Name { get; set; }
    public DateTime Date { get; set; }
    public List<Competitor> Competitors = new List<Competitor>();
}

class Competitor
{
    public string Name { get; set; }
    public List<Stats> SomeData = new List<Stats>():
}

class Stats
{
   //Other Properties Etc
}

它们将存储在:

class Events : Dictionary<string, List<Race>>
{             
    public Events()
        : base()
    {
    }              
}

我用另一个类填写词典:

class GenerateEventsData
{
    public Events newEvents = new Events();

    public GenerateEventsData()
    {
        fillEvents();
    }

    private void fillEvents()
    {
        //Method to fill events.
    }
 }

我觉得好像我正在进入一个阶段,其中的课程列表正在堆叠,而我的结构不正确。

我计划最终将数据序列化到磁盘并在以后重新使用,但这超出了这个问题的范围。但是,如果课程结构不合理,我想我可能会遇到问题。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

你可以使用通用容器:

public class ListDictionary<T> : Dictionary<string,List<T>>
{
    public ListDictionary():base(){}

    public void AddItem(string key, T value)
    {
        if(ContainsKey(key))
             this[key].Add(value);
        else
             Add(key,new List<T>{value});
    }

    //similar for remove and get
}

另请查看存储库模式。