C# 使用反射创建web控件的实例

C# 使用反射创建web控件的实例,c#,asp.net,reflection,C#,Asp.net,Reflection,如何在运行时使用反射创建web控件的实例?我创建了一系列实现公共接口的控件,我希望根据存储在数据库中的控件名称创建这些控件 我尝试(但失败)使用Activator.CreateInstance以以下方式创建这些控件的实例: Activator.CreateInstance("MyUserControl") 及 …并且都返回null 我还尝试通过尝试获取控件的类型 Type t = Type.GetType("controls_myusercontrol_ascx"); 及 …并返回null

如何在运行时使用反射创建web控件的实例?我创建了一系列实现公共接口的控件,我希望根据存储在数据库中的控件名称创建这些控件

我尝试(但失败)使用Activator.CreateInstance以以下方式创建这些控件的实例:

Activator.CreateInstance("MyUserControl")

…并且都返回null

我还尝试通过尝试获取控件的类型

Type t = Type.GetType("controls_myusercontrol_ascx");

…并返回null

如果我显式地将一个对象声明为controls\u myusercontrol\u ascx或myusercontrol,则没有问题——但在反射中找不到它


是否可以在运行时使用反射创建web用户控件?如果是这样,我该怎么做?

您可以使用
页面上的
加载控制
方法或
控制
类执行此操作。从Visual Studio帮助:

void Page_Init(object sender, System.EventArgs e)
{
    // Instantiate the UserControl object
    MyControl myControl1 =
        (MyControl)LoadControl("TempControl_Samples1.ascx.cs");
    PlaceHolder1.Controls.Add(myControl1);
}
Type t = Type.GetType("MyUserControl");
void Page_Init(object sender, System.EventArgs e)
{
    // Instantiate the UserControl object
    MyControl myControl1 =
        (MyControl)LoadControl("TempControl_Samples1.ascx.cs");
    PlaceHolder1.Controls.Add(myControl1);
}