2015-03-03 34 views
0

在我的例子類存儲都讓說:結構包含實例化類列表的類存儲在字典

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. 
    } 
} 

我覺得好像我正在進入一個階段課堂被堆積起來,我的結構不正確。

我打算最終將數據序列化到磁盤並在以後重新使用,但這超出了這個問題的範圍。但是,如果班級結構不合理,我認爲我可能有問題。 在此先感謝。

+0

爲什麼不使用數據庫? – dotctor 2015-03-03 09:18:39

+0

您的權利我可以使用數據庫。我只是想學習語言的不同方面,以獲得更多的樂趣。並努力讓我的頭腦爲不同場景構建我的課程。 – 2015-03-03 09:29:58

回答

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 
} 

也可以看看在倉庫模式。

+0

正是我在找的東西。感謝您指點我正確的方向。 – 2015-03-03 09:46:01

+0

@BlaineWordly實際上添加了一個鏈接到一個共享點的東西... http://www.remondo.net/repository-pattern-example-csharp/是好多了 – 2015-03-03 10:02:56