(擬似コード)のようなカスタムサーバーコントロールを作成しました
public class MyCustomCtrl : WebControl
{
private Button innerCtrl; //some arbitrary object, doesn't matter
...
protected override void CreateChildControls()
{
//initialization etc, as standard...
}
}
このカスタムサーバーコントロールをコピーする必要がある場合があります。基本的には、プログラマーがaspxまたはascxコードに宣言的に追加します。実行時に、このコントロールの複数のインスタンスを作成する必要があります。これらのインスタンスは、親コントロールに追加されます。ただし、これはその親コントロールのコンテキストで処理されます。
とにかく、使用のコンテキストを説明するのは少し難しいです。しかし、私の主な質問は、「クローン作成」を使用するのが安全かどうか、特にMemberwiseClone()
Webコントロールを呼び出すのに安全かどうかです。これまでに行ったことは、次のようなメソッドを追加することです
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コントロール階層は非常に複雑なモデルです。ですから、そのようなソリューションで発生する可能性のある欠点を知っている人がいるかどうかを聞きたかったのです。