私がしばらく考えていた質問 - Stackoverflow ユーザーは通常、重要な機能をコンストラクター (具体的には System.Web.UI.Page クラスから派生したクラス) に実装するのでしょうか、それともここでのロジックをできるだけシンプルに保つべきでしょうか。代わりに、OnPreInit に機能を実装します (コンストラクターを使用して、ページの残りの部分の機能が機能するために必要なオブジェクト/値をインスタンス化するだけです)? このシナリオに対する「ベストプラクティス」のアプローチはありますか?
この質問の背景:
私が取り組んでいるシステムには、かなり深いページ階層があります。実際のページが派生する約 10 個のチェーン ページ オブジェクトがあります。
-- System.Web.UI.Page ----- CustomPage1 : System.Web.UI.Page -------- カスタムページ 2 : カスタムページ 1 ----------など
各ページは特定の機能を追加します。多くの場合、カスタム ページ コンストラクター内で実行されるコードに依存するか、構築中に機能自体が直接実行されます。
私の質問を最もよく説明する例は、ページのライフサイクル中に使用できるように、データベースからページにカスタムオブジェクトをロードするページです-ページ構築中にデータベースへの接続が確立され、パブリックプロパティに正しい値が入力されます
私の考えでは、これは OnPreInit イベントから行う方が良いです。これは主に、親ロジックが実行される前にページ レベルのチェックを実行する柔軟性が高いためです (たとえば、この機能が呼び出されないようにする必要があります)。の実行は、子クラスの前に親クラスを構築します)。OO の観点からも、OnPreInit はこの機能を実装するためのより適切な領域のようです。ページの構築では、ページの構築、デフォルト値の設定などを処理する必要があります。ページのライフサイクル。