[英]C# link two properties together?
我正在嘗試檢索學生的模塊列表,並將其添加到另一個類的屬性中以顯示它們。 我的目標是,當我創建一個人的實例並且他們的程序具有特定名稱時,它將檢索該程序的模塊。
這是我的Program類中的方法,在這里我嘗試從Modules類中的ListOfModules方法獲取模塊。
public List<Modules> ModuleList
{
get
{
Modules m = new Modules();
if (m.ListOfModules == null)
{
return null;
}
else
{
return m.ListOfModules;
}
}
}
這是Modules類中的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"));
}
}
那么,如何才能在Program類中獲取ModuleList方法,以從Modules類中的ListOfModules方法獲取此模塊列表? 我知道這些模塊已添加到ListOfModules方法中,但是我似乎無法弄清楚如何將其與ModuleList鏈接,以便我可以打印出該列表。
我將花費大量的時間來解決這個問題,感謝您的幫助或支持。 對不起,聽起來像個業余愛好者。
問題的根源似乎是基類中的ModuleList。 我也不明白為什么您有2個級別的列表,這些列表似乎是完全相同的實現。
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; } }
沒有直接的方式可以按照您描述的方式鏈接這些內容。
我建議使用Person可以調用的臨時服務來按名稱檢索模塊。
看起來您的問題是List模塊在CGP子類中聲明,因此Programs超類中的ModuleList屬性無法訪問它。 如果希望Programs類中的屬性能夠返回要在CGP構造函數中添加的模塊,則需要將它們添加到Programs類的屬性中(可能已聲明為protected),以便僅子類可以訪問它。
還有其他一些看起來很奇怪的事情:為什么您的ModuleList getter創建一個新的Modules對象,然后返回它的屬性? Modules的構造函數會做一些事情來創建ListOfModules屬性基礎的數據還是從某個地方檢索數據?
為什么您的ListOfModules屬性檢查_modules是否為空,然后返回它是否為空? 我將跳過該內容和_modules屬性,然后執行以下操作:
internal List<Modules> ListOfModules { get; private set; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.