我已经定义了一个具有List<>
的类。我缩短了我的代码。太大了。有太多List<>
&amp;在Method1()
中有很多代码。这是我的代码: -
public class Time : ITime
{
public List<Table1> Setts1 = new List<Table1>();
public List<Tabl2> Setts2 = new List<Table2>();
public void LoadSettings1(int companyId)
{
Setts1 = ctx.tblSett1.Where(a => a.CompanyId == companyId).Select(a => a).ToList();
}
public double Method1()
{
var data = Setts1.Where(m => m.SetType == "TYPE1").Select(m => m.Value1).FirstOrDefault();
......
......
}
}
我想在另一个班级中使用Method1()
。我的问题是Setts1
,它已预先加载到Time
类中。因此,当它在Time
类中使用时,它具有Records
。但是当我从另一个班级调用它时,显然Setts1
将没有记录。我试图从另一个类初始化它: -
public class Class
{
.....
Time cls = new Time();
cls.Setts1 = ....;
cls.Method1();
}
但是Setts1
在Method1
时没有显示任何记录。如何从另一个类初始化List<>
?
答案 0 :(得分:2)
在班级之外公开班级的字段成员不是一个好习惯。所以我建议像这样使用属性:
//Mark the field member as private
private List<Table1> _Setts1 = new List<Table1>();
//Use Property to access the field outside of the class
public List<Table1> Setts1
{
get
{
if (_Setts1==null || _Setts1.Count()==0) //or any other logic you need
{
//Initialize the field memeber
_Setts1 = ctx.tblSett1.Where(a => a.CompanyId == companyId).Select(a => a).ToList();
}
return _Setts1
}
}
通过这种方式,您可以忘记LoadSettings1
之类的方法,无论您是在课堂内还是在课堂内使用Setts
属性,它都会在正确的时间进行初始化。
答案 1 :(得分:1)
您必须调用'LoadSettings1(int companyId)'。这是带来记录并填充“列表”的方法。
public class Class
{
.....
Time cls = new Time();
cls.LoadSettings1(1);
cls.Setts1 = ....;
cls.Method1();
}
答案 2 :(得分:0)
Storyboard
这样的东西?使用“其他类”的构造函数到LoadSettings。
答案 3 :(得分:0)
cls.Setts1 = ....;
实际上我看不出你的代码是如何工作的,即使正如Hossein所说,这是不好的做法。看看你是如何设置cls.Setts1(....部分)。这很可能是罪魁祸首