4

私の ASP.NET 以前の開発環境には、ほぼ普遍的なベスト プラクティスがありました。

* NEVER use the native controls!
* Instead, subclass ALL the controls, and ALWAYS use the subclassed version.

なんで?それはあなたにフックを与えたからです...コードを記述し、アプリケーション全体に適用するための1つの場所。

例: Web フォーム アプリのすべての TextBox の右側に疑問符アイコンを表示することにしたとします。アイコンがレンダリングされ、その上にカーソルを置くとバブル ヘルプがポップアップ表示されます (TextBox.ToolTip プロパティにテキストがある場合)。

MS 提供の TextBox コントロールを使用している場合、どのようにそれを達成しますか?

アプリケーションで TextBox のサブクラス化されたバージョンを一貫して使用している場合は、そのオブジェクトに移動し、アイコンをレンダリングするメソッドを追加して、お気に入りの bubblehelp JavaScript をストックすることができます。

プレスト!アプリのすべての TextBoxes は小さなクエスチョン マーク アイコンを生成します。または、ToolTip テキストを設定すると生成されます。

時間の経過とともに、すべての TextBox を簡単に適応させて拡張することができます。これは、すべての TextBox に変更可能な基本クラスがあるためです。ツール ヒントがリソース ファイルから設定される機能を追加します。次に、TextBox の左側にアイコンを表示する ShowOnLeft プロパティを追加します。iPhone のパスワード コントロールで最後に入力した文字が表示され、それより前の文字が隠されているのが好きですか? サブクラス化された TextBox のパスワードに対するデフォルトの動作を、その動作を実装するメソッドでオーバーライドします。

ASP.NET で、この慣行の支持者に会ったことはありません。私はちょうどそれを逃したのですか?2 ダースの ASP.NET デザイン パターンを説明する記事には、関連するものは何もありません。サーバー コントロールをサブクラス化する方法に関する投稿では、数字のみを受け入れる TextBox など、特別な目的の 1 回限りの機能について説明していますが、「常にサブクラス化されたコントロールを使用してください!」という普及を推奨するものはありません。私が昔加入していたポリシー。

ASP.NET で作業するときに、この古くからの知恵を適用することは理にかなっていますか? ネイティブ サーバー コントロールと同等のサブクラス化されたものを常に使用するには?

そうでない場合 - なぜですか?この猫の皮を剥ぐ他の方法はありますか? 特定のコントロールのアプリケーションのすべてのインスタンスを拡張できる場所を 1 つだけ提供する手法ですか?

それについて聞きたいです。TextBoxQMarkコントロールが必要です。:-)

TIA - ホイスター

4

4 に答える 4

2

理論的には、それは良い考えです。実際には、ほとんどの場合、サブクラスを作成するのが面倒で、戻ってそれらを追加する必要があることはめったにありません。

于 2009-12-10T22:05:28.087 に答える
2

理論的には素晴らしいことですが、これらのサブクラスが必要な頻度と、クラスを派生させて必要な変数を検索して置き換えるのがどれほど難しいかということです。未使用のすべてのサブクラスによって引き起こされる「混乱」は、プロジェクトを不必要に「複雑にする」と思います。

プロジェクトを乱雑にするよりも、テキストボックスと画像、または必要なコントロールの組み合わせを使用してユーザーコントロールを追加することをお勧めします。

WinForms プロジェクトでもこれを行いますか? (めったにそれが行われるのを見たことはありませんが、それが主張する価値を追加しているようには見えません。)

于 2009-12-10T22:11:54.983 に答える
1

ほとんどの場合、サブクラスは必要ありません。

代わりに、タグ マッピングまたはコントロール アダプターを使用して、さまざまな種類のカスタマイズを実行できます。

それが役立つ場合は、私の本で両方のアプローチについて説明し、サンプル コードを示します: Ultra-Fast ASP.NET

于 2009-12-11T11:08:16.117 に答える
0

私は自分のアプリケーションでこの概念を広範囲に使用しましたが、見つけた唯一の欠点は

1) 場合によっては、基本クラスに if/else 条件が多すぎて 5 % のケースにしか必要とされないことがありますが、それらは 100 % のケースに影響します。

2) コードが複雑になり、開発者にとって理解しにくくなる可能性があるため、プロジェクトに新しい開発者を追加するのが難しい

したがって、それは良い考えですが、実際には良い方法で実装することは困難です

于 2009-12-11T05:06:38.677 に答える