我有這樣一個字符串列表值:創建動態字符串名稱,並設置在C#
public string TypeOrig { get; set; }
public string TypeAdj { get; set; }
public string TypeClass { get; set; }
public string TypeMsg { get; set; }
public string QtyOrig { get; set; }
public string QtyAdj { get; set; }
public string QtyClass { get; set; }
public string QtyMsg { get; set; }
基於來自DB行,我填充字符串是這樣的:
switch(fRow["fieldName"].ToString())
{
case "partType":
TypeOrig = fRow["original"].ToString();
TypeAdj = fRow["adjusted"].ToString();
TypeClass = fRow["status"].ToString();
TypeMsg = fRow["message"].ToString();
break;
case "qty":
QtyOrig = fRow["original"].ToString();
QtyAdj = fRow["adjusted"].ToString();
QtyClass = fRow["status"].ToString();
QtyMsg = fRow["message"].ToString();
break;
}
我想這個減少是這樣的:
switch(fRow["fieldName"].ToString())
case "partType": fieldName = "Type";
break;
case "qty": fieldName = "Qty";
break;
}
fieldName + "Orig" = fRow["original"].ToString();
fieldName + "Adj" = fRow["adjusted"].ToString();
fieldName + "Class" = fRow["status"].ToString();
fieldName + "Msg" = fRow["message"].ToString();
附加信息:
- db中的字段名稱有一些例外,所以我不能簡單地使用字段名稱並且必須使用開關。
- 我還必須從db中爲幾個字段填充一些非標準字符串。
- 我目前有32個字段名稱,可以增長,所以減少代碼的長度將使它更容易管理。 (@Servy的方法將其降低到19)
- 生成的字符串在視圖中使用。
如何動態設置字符串名稱並填充它?
清潔,簡單,易於閱讀和維護。簡單的美麗!感謝您的提示和提示。 – davids 2013-02-09 01:22:10
更進一步,大部分模型字符串與db字段名稱相同。如果我針對每種特殊情況使用一個案例,我如何在默認開關案例中使用db字段名稱?所以'case「qty」:qty = foo;'只是'default [dbfield] = foo;'。那可能嗎? – davids 2013-02-09 01:33:20
@davids所以處理這個問題的方法是使用'Dictionary'而不是幾個屬性,然後代替switch/cast,你只需要'somedictionary [fRow [「fieldName」]。ToString()] = foo; '你就完成了。 –
Servy
2013-02-09 05:50:34