Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用表中的控件名称从控件库中动态选择和构建控件_C#_Asp.net_Dynamic_Controls - Fatal编程技术网

C# 使用表中的控件名称从控件库中动态选择和构建控件

C# 使用表中的控件名称从控件库中动态选择和构建控件,c#,asp.net,dynamic,controls,C#,Asp.net,Dynamic,Controls,我的服务器控件库中有一个自定义DDL 目前,我通过按惯常方式大力键入控件的名称,将此控件添加到表中 Control_Library.Report_NumberDDL newDDL = new Control_Library.Report_NumberDDL(); 我希望能够通过从表中提取控件名来动态创建该控件 因此,我会在我的代码中包含控件的名称,在本例中为“Report_NumberDDL”,然后我希望创建该控件,而不必强制键入它 像这样的,虽然我知道这不起作用: string contro

我的服务器控件库中有一个自定义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)上,我得到一个空值异常。因此,无法正确创建类型。

您需要使用反射来动态实例化对象。导入System.Reflection命名空间,然后执行以下操作:

Type type = Type.GetType(ControlName); 
object control = Activator.CreateInstance(type); 

好的,我正在努力解决这个问题,但这里有一个问题是我所做的:Type Type=Type.GetType(“One_Eva\u Control\u Library.Emu\u AIR\u Report\u NumberDDL”);对象控件=Activator.CreateInstance(类型);现在我得到了一个空类型异常,所以我不确定我做错了什么。请确保您的One_Eva_Control_库程序集已加载且可用。然后尝试Type=Type.GetType(“Emu\u AIR\u Report\u NumberDDL”);当您说loaded and available(已加载且可用)时,这是否意味着添加“使用一个Eva控件库;”到我的aspx.cs文件?或者是否还有其他需要确保程序集已加载且可用的内容。我也发现了这一点:如果您使用typeof(One_Eva_Control_Library.Emu_AIR_Report_NumberDDL).AssemblyQualifiedName,您应该获得用于GetType()的字符串。我只是说程序集在项目中被引用,并且在类文件的顶部有一个用于该程序集的using语句。我正在查看用于加载插件系统类型的代码,我还使用Assembly.LoadFile()通过反射加载程序集。我认为获得AssemblyQualifiedName将是你最好的选择。