我的服务器控件库中有一个自定义DDL。
目前,我通过强制键入控件的名称(通常的方式)将此控件添加到表中。
Control_Library.Report_NumberDDL newDDL = new Control_Library.Report_NumberDDL();
我希望能够通过从表中提取控件名来动态创建该控件。
所以我的代码中会有控件的名称,在本例中为“Report_NumberDDL”,然后我想创建控件而不必强烈键入它。
像这样的东西,虽然我知道这不起作用:
string controlName = "Report_NumberDDL";
Control_Library."controlName" controlNum1 = new Control_Library."controlName"();
因为那显然不起作用,有人能帮助我做些什么吗?
由于
编辑:
我试着这样做:
Type type = Type.GetType("Control_Library.Report_NumberDDL");
object control = Activator.CreateInstance(type);
但是在CreateInstance(type)上我得到一个null值异常。因此,没有正确创建类型。
答案 0 :(得分:0)
您需要使用反射来动态实例化对象。导入System.Reflection命名空间,然后执行以下操作:
Type type = Type.GetType(ControlName);
object control = Activator.CreateInstance(type);