我正在接管某人的工作,并且有很多重复的代码。现在,我只是想下面的代码更改:使用反射(我想改变的代码是这个代码块之后)我可以通过提供名称来使用反射来获取现有变量吗?
if (Session["opt3PSRAddHrs4"] != null)
{
lblDay4AddHrs.Text = "Additional Hours: " + (String)Session["opt3PSRAddHrs4"];
}
else
{
lblDay4AddHrs.Visible = false;
}
if (Session["opt3PSRAddHrs5"] != null)
{
lblDay5AddHrs.Text = "Additional Hours: " + (String)Session["opt3PSRAddHrs5"];
}
else
{
lblDay5AddHrs.Visible = false;
}
if (Session["opt3PSRAddHrs6"] != null)
{
lblDay6AddHrs.Text = "Additional Hours: " + (String)Session["opt3PSRAddHrs6"];
}
else
{
lblDay6AddHrs.Visible = false;
}
if (Session["opt3PSRAddHrs7"] != null)
{
lblDay7AddHrs.Text = "Additional Hours: " + (String)Session["opt3PSRAddHrs7"];
}
else
{
lblDay7AddHrs.Visible = false;
}
到
for (int i = 0; i < 7; i++) {
Label label = Reflection.getVariable(type = "Label", name = "lblDay" + i + "AddHrs");
string sessionData = (string) Session["opt3PSRAddHrs" + i];
if (sessionData != null) {
label.Text = "Additional Hours: " + sessionData;
}
else {
label.Visible = false;
}
}
。由于这些标签的名称遵循一种模式,反射可以帮助吗? (也许把所有opt3PSRAddHrs的东西放在一个数组中是一个好主意,但是你知道,现在我不想改变那部分代码......每一次改变都可能会导致不一致......)
你可以(假设他们是成员变量),但我不认为这是一个好办法。我同意你的评论,将它们全部放在一个数组中(或者仅仅修复它)是一种更好的方法。恕我直言,Relflection只会让它变得更糟。 – 2011-06-05 01:11:44
把这件事记下来,可能是你曾经有过的最糟糕的想法。 – 2011-06-05 01:15:27
我认为这是针对ASP.NET的,虽然你的标签没有提到它。 – 2011-06-05 01:28:47