我正在接管某人的工作,並且有很多重複的代碼。現在,我只是想下面的代碼更改:使用反射(我想改變的代碼是這個代碼塊之後)我可以通過提供名稱來使用反射來獲取現有變量嗎?
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