初始化列表<>;来自另一个班级
本文关键字:另一个 列表 lt gt 初始化 | 更新日期: 2023-09-27 18:13:58
我定义了一个具有List<>
的类。我缩短了代码。它太大了。List<>
&在CCD_ 3中存在大量的代码。这是我的代码:-
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();
}
但CCD_ 10在CCD_ 11中不显示任何记录。如何从另一个类初始化List<>
?
在类外公开字段成员不是一个好的做法。因此,我建议使用属性,如下所示:
//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
属性,它都会在正确的时间初始化。
您必须调用"LoadSettings1(int companyId("。这是一种带来记录并填充"列表"的方法。
public class Class
{
.....
Time cls = new Time();
cls.LoadSettings1(1);
cls.Setts1 = ....;
cls.Method1();
}
public class Something
{
private Time cls = new Time();
public Something(int companyId)
{
cls.LoadSettings1(companyId);
}
public void CallMethod1()
{
cls.Method1();
}
}
像这样的东西?将"其他类"的构造函数用于LoadSettings。
cls.Setts1 = ....;
事实上,我不明白你的代码怎么会不起作用,即使正如Hossein所说,这是一种糟糕的做法。看看你是如何设置cls的。Setts1(…部分(。这很可能是罪魁祸首