我编写了一个自定义服务器控件,它(伪代码)看起来像
public class MyCustomCtrl : WebControl
{
private Button innerCtrl; //some arbitrary object, doesn't matter
...
protected override void CreateChildControls()
{
//initialization etc, as standard...
}
}
现在我必须复制这个自定义服务器控件。基本上它是由程序员以声明方式添加到 aspx 或 ascx 代码上的。在运行时,必须创建该控件的多个实例,然后将其添加到某个父控件。然而,这是在该父控件的上下文中处理的。
无论如何,解释使用的上下文有点困难。然而,我的主要问题是使用“克隆”是否安全,尤其是调用MemberwiseClone()
网络控件?到目前为止我所做的是添加一个类似的方法
public class MyCustomCtrl : WebControl
{
...
public object Clone(){
MyCustomCtrl clone = MemberwiseClone() as MyCustomCtrl;
clone.InnerCtrl = this.innerCtrl.Clone() as Button; //or whatever type
return clone;
}
}
我的意思是 ASP.net 控件层次结构是一个相当复杂的模型。所以我想听听你们中的一些人是否知道这种解决方案可能出现的任何缺点。