私は、複数のTabControlタブを持つWinFormsフォームを持っています。各タブページにユーザーコントロールを追加することにより、タブページの機能を実装します。これにより、巨大なFormクラスの問題に直面するのではなく、各ページの機能をクラスに分けることができます。強制派生クラスで特定のメソッドを実装する
また、共通の機能とアプリケーションパラメータへの参照を提供するために、タブページベースクラスを定義しました。したがって、継承はUserControl - > PagesBase - > MyPage1(MyPage2など)です。提供されたPagesBaseは抽象ではありませんが、これはすべてうまくいきます。私は通常、VS2012内の個々のページをデザインすることができます。
しかし、各ページに小さな(共通の)メソッドとプロパティのセットを実装したいと考えています。最初の考えは、抽象的なPagesBaseクラスを使用することでした。残念ながら、VSの個々のページデザイナーは、PagesBaseのインスタンスを作成する必要があると不平を言って開始しませんでした。
次に、PagesBaseにインターフェイスを適用することを考えました。しかし、これは、PagesBaseにすべての一般的なメソッドなどを定義させ、派生したMyPageNクラスで使用できるようになり、独自のメソッドを定義する必要がなくなるため、機能しません。 Interfaceでは、それらを基底クラスでプライベートとして定義することはできません。
ページを追加して共通のインターフェイスから直接派生する(ただし、これを実行できない)か、またはページがオーバーライドされていない基本クラスメソッドと呼ばれる場合はランタイム例外を発生させることを期待しています(コンパイル時の警告)。
明らかなものがありませんか?どのようなアイデアをしてください?
純粋な仮想メソッドを試しましたか? –
あなたは仮想としてPagesBaseであなたのメソッドを宣言することができ、メソッドがチリページクラスでオーバーライドされない場合に実行時例外を取得するために例外がスローされます。 –
@ThomasMatthews:そうです。それは、「抽象的なPagesBaseクラスを使用する」と言いました。問題は、Visual StudioのGUIデザイナーが "PagesBase"オブジェクトを作成したいということです。 –