我有一个类来保存一周中不同日期的接口。我将表单元格传递给那个类,并将其应用于一个列表。但是,当我循环遍历类并调用HideInterface方法时,它并没有设置接口的可见性。我遗漏了什么?在我的示例中,我希望不会看到星期二。我确信这与将属性设置为静态有关,但我无法完全破解它。
private static List<DayOfWeek> days = new List<DayOfWeek>();
private static List<WhatsMyDay> myDays = new List<WhatsMyDay>();
public class WhatsMyDay
{
public WhatsMyDay(DayOfWeek day, DropDownList am,
DropDownList pm, HtmlTableCell dTitle)
{
Day = day;
ddlAM = am;
ddlPM = pm;
tdTitle = dTitle;
}
public DayOfWeek Day { get; private set; }
private static DropDownList ddlAM { get; set; }
private static DropDownList ddlPM { get; set; }
private static HtmlTableCell tdTitle { get; set; }
public int? AM
{
get {
return Convert.ToInt32(ddlAM.SelectedValue) == -1
? null
: (int?)Convert.ToInt32(ddlAM.SelectedValue);
}
}
public int? PM
{
get {
return Convert.ToInt32(ddlPM.SelectedValue) == -1
? null
: (int?)Convert.ToInt32(ddlPM.SelectedValue);
}
}
public void ShowHideInterface(bool visiblity)
{
tdTitle.Visible = visiblity;
}
}
protected void Page_Load(object sender, EventArgs e)
{
days.Add(DayOfWeek.Monday);
myDays.Add(new WhatsMyDay(
DayOfWeek.Monday, ddlMondayAM, ddlMondayPM, tdMondayTitle));
myDays.Add(new WhatsMyDay(
DayOfWeek.Tuesday, ddlTuesdayAM, ddlTuesdayPM, tdTuesdayTitle));
foreach (WhatsMyDay dayo in myDays)
{
dayo.ShowHideInterface(days.Contains(dayo.Day));
}
}发布于 2018-01-18 19:54:57
如果DayOfWeek是一个枚举(此处未显示),则行为将描述为:
由于只将Monday添加到days变量,因此只有Monday是可见的,因为只有简化后的表达式才是真的:[DayOfWeek.Monday].Contains(DayOfWeek.Monday)
使visiblity for ShowHideInterface仅在循环的该迭代中为真。
如果不是,什么是DayOfWeek?
至于静态属性,您应该将它们更改为非静态属性,因为静态属性会使它们被WhatsMyDay的所有实例共享,而这似乎根本不是您的目标。
https://stackoverflow.com/questions/48320307
复制相似问题