代码之家  ›  专栏  ›  技术社区  ›  George Johnston

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

  •  0
  • George Johnston  · 技术社区  · 15 年前

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

    Activator.CreateInstance("MyUserControl")
    

    Activator.CreateInstance("ASP","controls_myusercontrol_ascx")
    

    …都返回空值。

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

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

    如果我显式地将一个对象声明为controls_myusercontrol_ascx或myusercontrol,就没有问题——但是使用反射无法找到它。

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Carl Raymond    15 年前

    你可以用 LoadControl 方法论 Page Control 上课。从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);
    }