1

BaseUserControl を継承するコントロールがいくつかあります。BaseUserControl は System.Web.UI.UserControl を継承しています。次のようにイベント
をオーバーライドしたい:OnLoad

 public partial class MyControl1 : BaseUserControl
    { 
       protected override void OnLoad(EventArgs e)
       {
          this.Value = myCustomService.GetBoolValue();  
          ///More code here...
          base.OnLoad(e);
       }
    }     

これはうまく機能しますが、唯一の問題は、このコードを 3 つのコントロールにコピーする必要があることです。これは好きではありません。(何百ものコントロールに継承されているため、Base クラスにはアクセスできません。)

したがって、現在の結果は次のようになります。

public partial class MyControl2 : BaseUserControl
        { 
           protected override void OnLoad(EventArgs e)
           {
              this.Value = myCustomService.GetBoolValue();  
              ///More code here...
              base.OnLoad(e);
           }
        }      
 public partial class MyControl3 : BaseUserControl
        { 
           protected override void OnLoad(EventArgs e)
           {
              this.Value = myCustomService.GetBoolValue();  
              ///More code here...
              base.OnLoad(e);
           }
        }   

これをリファクタリングする良い方法は何ですか? 1つの方法は、抽出することです

 this.Value = myCustomService.GetBoolValue();  
                  ///More code here...   

別の方法に変更しましたが、オーバーライド イベントを 1 回だけ指定できるようにする方法があるかどうか疑問に思っていました。

4

1 に答える 1