【发布时间】:2011-06-05 01:08:05
【问题描述】:
我正在接手某人的工作,并且有很多重复的代码。现在,我只想更改以下代码:(我要更改的代码在此代码块之后)
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 的东西放在一个数组中是个好主意,但你知道,现在我不想更改那部分代码......每次更改都可能会留下不一致......)
【问题讨论】:
-
你可以,(假设它们是成员变量),但我认为这不是一个好方法。我同意您的评论,将它们全部放在一个数组中(或者只是一般地修复它)是一种更好的方法。反思只会让事情变得更糟,恕我直言。
-
把它归档,可能是你曾经有过的最糟糕的想法。
-
我认为这是针对 ASP.NET 的,尽管您的标签没有提及。
-
@Anthony Pegram 对不起,我没听懂你...
标签: c# asp.net reflection refactoring