我正在創建一個包含ListControl對象的自定義Web服務器控件(擴展Panel)。我希望ListControl類型是靈活的,即允許在aspx標記中指定ListControl的類型。目前我正在檢查用戶的選擇和使用switch語句初始化控制:在C#中創建靈活的對象
public ListControl ListControl { get; private set; }
private void InitialiseListControl(string controlType) {
switch (controlType) {
case "DropDownList":
ListControl = new DropDownList();
break;
case "CheckBoxList":
ListControl = new CheckBoxList();
break;
case "RadioButtonList":
ListControl = new RadioButtonList();
break;
case "BulletedList":
ListControl = new BulletedList();
break;
case "ListBox":
ListControl = new ListBox();
break;
default:
throw new ArgumentOutOfRangeException("controlType", controlType, "Invalid ListControl type specified.");
}
}
當然還有一個更優雅的方式來做到這一點...很明顯,我可以允許客戶端代碼來創建對象,而不是,但我想消除使用除aspx標記之外的任何代碼的需要。任何建議,將不勝感激。謝謝。
用戶是指其他正在使用ListControl的開發人員,還是指實際用戶? – 2013-05-01 02:42:37
是的,我指的是將在頁面上使用此控件的開發人員。我希望他們能夠在標記中指定類型,例如 –
kad81
2013-05-01 02:55:42