2017-01-04 13 views
0

私は異なる機能を持つ同じユーザーコントロールを含む5つのWebフォームを用意しています。現在のシステムはMVPパターンに従います。これらのWebフォームはすべて単一の基本クラスから継承されています(次の画像を参照してください)。今、すべてのフォームに共通する特定の条件に対して、それぞれのフォームを個別に無効にする必要があります。だから、フォームの1つにユーザーコントロールの各フィールドを無効にする方法を書いて、うまくいきます。残りのWebフォームには、同じセットのユーザーコントロールが含まれているため、このメソッドを再利用できます。 enter image description here兄弟内で子クラスメソッドを再利用するソリューション(ASP.NET/VB.NET)

DisableControls()メソッドは、各ユーザーコントロールの()メソッドを呼び出しDisableInputs:

enter image description here

これは、他のWebフォームクラスに複製されるであろう。誰もがこのメソッドを再利用するのに適したソリューションを提案できますか?

+0

それはすべてのフォームから派生する基底クラスに入れて..? – user1429080

+0

ありがとう..コードを説明するために投稿を編集しました。 DisableControls()をBaseClassに配置すると、ユーザーコントロールをパラメータとして渡す必要があります。それ以外の場合は、子クラスのユーザーコントロールに基本クラスからアクセスできません。したがって、共通のユーティリティクラスにDisableControls()メソッドを共有メソッドとして配置する方法と似ています。私が間違っているなら、私を修正してください。 – Watz

+0

右の音、はい。しかし、もしあなたが5つのフォームにすべて 'UserControl1'と' UserControl2'を持っていれば、それらも基本クラスに入れることができます。そしてあなたのメソッドはそれらにアクセスできます。とにかく、同じ構造を持つフォームがさらに増えない限り、これをエンジニアリングしないでください。 – user1429080

答えて

1

DisableControls()の基底クラスに空のサブを含める場合、子クラスの固有の知識を与えることなく、子クラスでこれをオーバーライドできます。このような

何か:

Public Class Base 
    Overridable Sub DisableControls() 
     'Do nothing if nothing is implemented 
    End Sub 
End Class 

Public Class Instance1 
    Inherits Base 
    Public Overrides Sub DisableControls() 
     Me.UserControl1.DisableInputs() 
     Me.UserControl2.DisableInputs() 
    End Sub 
End Class 

Public Class Instance2 
    Inherits Base 
    Public Overrides Sub DisableControls() 
     Me.UserControl3.DisableInputs() 
    End Sub 
End Class 
+0

ありがとう、私はコードを再利用可能にするために同様のことをしました。 – Watz

関連する問題