我正在创建一个包含 ListControl 对象的自定义 Web 服务器控件(扩展面板)。我希望 ListControl 类型灵活,即允许在 aspx 标记中指定 ListControl 的类型。目前我正在检查用户的选择并使用 switch 语句初始化控件:
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 标记之外的任何代码的需要。任何建议,将不胜感激。谢谢。