动态呈现控件,从字符串/ XML文件中确定类型?

在ASP.NET应用程序中,我想动态呈现几个控件及其属性来自XML文档。 这是踢球者:我希望能够动态确定控件的类型。 所以,在我的XML文档中,我有这样的事情:

 myControl1 CheckBox Text For This Control  

我可以让一切工作正常,就属性而言,只要我手动将新控件实例化为一个复选框……但我似乎无法弄清楚如何使它成为一个复选框,而不是文本框或其他什么基于XML信息……

您可能希望能够控制超出Control类型的输出。 我的建议:

 public interface IControlProvider { public Control GetControl(XmlElement controlXml); }; public class ControlProviderFactory : IControlProvider { private Dictionary providers = new Dictionary(); public ControlProviderFactory() { //Add concrete implementations of IControlProvider for each type } public Control GetControl(XmlElement controlXml) { string type = (controlXml.SelectSingleNode("type") as XmlElement).InnerText; if(!providers.ContainsKey(type) throw new Exception("No provider exists for " + type); return providers[type].GetControl(controlXml); } } 

您还可以添加一个ReflectionControlProvider作为非注册类型的后备,并让它在遇到未知提供程序类型时使用Activator.CreateInstance而不是抛出exception。 这样,您就可以获得最大的灵活性,可以对渲染和动态创建进行特定控制

您可以创建有效类型的Dictionary ,也可以使用Activator.CreateInstance按名称创建实例。