2013-04-03 32 views
0

我正在嘗試爲一個學生檢索一個模塊列表,並將它們添加到另一個類的屬性中以顯示它們。我的目標是,當我創建一個人的實例並且他們的程序具有特定名稱時,它將檢索該程序的模塊。C#將兩個屬性鏈接在一起?

這是我的程序類中的方法,我嘗試從Modules類的ListOfModules方法中獲取模塊。

public List<Modules> ModuleList 
    { 
     get 
     { 
      Modules m = new Modules(); 

      if (m.ListOfModules == null) 
      { 
       return null; 
      } 
      else 
      { 
       return m.ListOfModules; 
      } 
     } 
    } 

這是在模塊級的ListOfModules方法。

internal List<Modules> ListOfModules 
    { 
     get 
     { 
      if (_modules == null) 
      { 
       return _modules; 
      } 
      else 
      { 
       return _modules; 
      } 
     } 
    } 

,這裏是我如何增加模塊,模塊列表的例子。

class CGP : Programmes 
{ 
    List<Modules> modules; 
    public CGP() :base("CGP") //CGP is the name of the programme 
    { 
     modules = new List<Modules>(); 
     modules.Add(new Modules("example 1")); 
     modules.Add(new Modules("example 2")); 
    } 
} 

所以,我怎麼能去獲得在程序類ModuleList方法來獲取從模塊類的ListOfModules方法模塊的這個名單?我知道這些模塊正在添加到ListOfModules方法中,但他們似乎無法解決如何將它與ModuleList鏈接起來,因此我可以打印出該列表。

我會很感激任何幫助或支持,因爲我花了無數的時間來解決這個問題。對不起,聽起來像一個業餘愛好者。

+1

你也許應該看看做一個集合。一個程序有很多模塊。然後,您可以使用程序名稱作爲密鑰 – 2013-04-03 22:02:09

回答

1

問題的根源似乎是您的基類中的ModuleList。我也不明白爲什麼你有兩個級別的列表似乎是完全相同的實現。

class Programme 
{ 
    private List<Module> _modules = new List<Module>(); 

    public List<Module> Modules { get { return _moduleList; } } 
} 

class CGP : Programme 
{ 
    public CGP() :base("CGP") 
    { 
     Modules.Add(new Module("example 1")); 
     Modules.Add(new Module("example 2")); 
    } 
} 

這尤其顯得傻:

internal List<Modules> ListOfModules 
{ 
    get 
    { 
     if (_modules == null) 
     { 
      return _modules; 
     } 
     else 
     { 
      return _modules; 
     } 
    } 
} 

您傳回同樣的事情無論哪種方式,所以檢查是不必要的。它基本上與此相同:

internal List<Modules> ListOfModules { get { return _modules; } } 
+0

非常感謝您,在您打開我的眼睛後,我終於能夠開始工作,是的,我知道這看起來非常愚蠢,我沒有注意到它。我正在嘗試各種各樣的隨機事物來使它起作用。 – Kash 2013-04-03 23:38:57

0

以你描述的方式沒有直接的方式來鏈接這些東西。

我會推薦使用一個人員可以調用的臨時服務來按名稱檢索模塊。

0

看起來你的問題是List模塊是在CGP子類中聲明的,所以程序超類中的ModuleList屬性無法訪問它。如果您希望Programs類中的某個屬性能夠返回您在CGP構造函數中添加的模塊,則需要將它們添加到Programs類的屬性中,可能聲明爲protected,以便只有子類可以訪問它。

其他一些看起來很奇怪的事情: 爲什麼你的ModuleList getter創建一個新的Modules對象然後返回它的一個屬性?模塊的構造函數是否做了一些事情來創建ListOfModules屬性的基礎數據或從某處取回數據?

爲什麼ListOfModules屬性檢查_modules是否爲空,然後返回它是否爲空?我會跳過和_modules屬性,並做:

internal List<Modules> ListOfModules { get; private set; }