什么是动态使用类的最佳方式

时间:2013-07-09 19:57:27

标签: asp.net c#-4.0 user-controls

更新:我完全重新阐述了问题

我正在尝试实现一种动态更改类名的算法。 例如:

Data.cs

public class Data
{

    public string text1 { get; set; }
    public string text2 { get; set; }

}

User1.ascx

public partial class User1 : System.Web.UI.UserControl
{
    public Data datas = new Data();
}

User2.ascx

public partial class User2 : System.Web.UI.UserControl
{
    public Data datas = new Data();
}

User.aspx

public partial class User: System.Web.UI.Page
    {
    [WebMethod]
    public static string RequestUC(Data datas) 
    {
    if (datas.userfile = "User1.ascx")
    {
         User1 userControl = (User1)page.LoadControl(datas.userfile);
    }
    else
    {
         User2 userControl = (User2)page.LoadControl(datas.userfile);
    }

    using (Page page = new Page())
            {                               
                userControl.datas = datas;  // the error says that the  userControl not recognized
                page.Controls.Add(userControl);
                using (StringWriter writer = new StringWriter())
                {
                    page.Controls.Add(userControl);
                    HttpContext.Current.Server.Execute(page, writer, false);
                    return writer.ToString();
                }
            }
    }

    }

问题是我无法获得User.aspx的工作。任何解决方案都可行。

在这种情况下如何使用泛型?

谢谢你

1 个答案:

答案 0 :(得分:1)

使用继承。

创建基本用户控件类:

public abstract class UserControlBase : System.Web.UI.UserControl {
    public abstract Data Datas { get; set; }
}

然后从该类派生每个用户控件(并实现抽象属性,未显示):

public partial class User1 : UserControlBase

public partial class User2 : UserControlBase

在你的网络方法中:

//TODO - validate that datas.userfile is appropriate
UserControlBase myControl = page.LoadControl(datas.userfile);