我正在尝试为学生检索模块列表,并将它们添加到另一个类的属性中以显示它们。我的目标是,当我创建一个人的实例并且他们的程序具有某个名称时,它将检索该程序的模块。
这是我的Program类中的方法,我尝试从Modules类中的ListOfModules方法获取模块。
public List<Modules> ModuleList
{
get
{
Modules m = new Modules();
if (m.ListOfModules == null)
{
return null;
}
else
{
return m.ListOfModules;
}
}
}
这是Modules Class中的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链接以便我打印出该列表。
我会感激任何帮助或支持,因为我花了不少时间试图解决这个问题。对不起,听起来像一个业余爱好者。
答案 0 :(得分: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; } }
答案 1 :(得分:0)
没有直接的方式以你描述的方式链接这些东西。
我建议使用Person可以调用的临时服务来按名称检索模块。
答案 2 :(得分:0)
看起来您的问题是List模块是在CGP子类中声明的,因此Programs超类中的ModuleList属性无法访问它。如果您希望Programs类中的属性能够返回您在CGP构造函数中添加的模块,则需要将它们添加到Programs类的属性中,可能声明为protected,以便只有子类可以访问它
其他一些看似奇怪的事情: 为什么ModuleList getter创建一个新的Modules对象然后返回它的属性? Module的构造函数是否可以创建基于ListOfModules属性的数据或从某个地方检索它的数据?
为什么ListOfModules属性检查_modules是否为null,然后返回它是否为null?我会跳过它和_modules属性并执行:
internal List<Modules> ListOfModules { get; private set; }