あなたはMVCはそれがだ、これを行うために得ることができない場合このVBスタイルの擬似コードのようなものを手作業で作る価値があるのです。これには...
コントロールのサブクラス化。
痛みはそれほどではありませんが、中程度のものです。したがって、中規模から大規模のアプリケーションにのみ適しています。しかし、彼らのためにそれの価値がある。
Interface BaseUIControl
Property Enabled as Boolean
Property Visible as Boolean
Property Name as String
Property EntireStateAsXML as string ' You can use this to do EVERYTHING!
Interface UserActionItem
Event Clicked(sender as UserActionItem ... don't pass anything from UI namespaces!)
Class MyButton (or link, etc.) Implement BaseUIControl, UserActionItem Inherits UI.Button
これはどのように役立ちますか?基本的に欠けている機能を置き換えました。あなたのコントローラ(またはアプリケーション層)はUIコンポーネントをインターフェイスのみで認識できるため、UIタイプを表示する必要はありません。
もっと...
あなたはすべてを制御するには、この理念を活用することができます。これは私に数千時間の猿コードを保存しました。
Interface TextControl
Property Value as text
Interface CheckControl
Property Checked as boolean
上記の2つはかなり基本的です。あなたはMyCheckBoxとMyTextBoxをUIバージョンから継承し、適切なものを実装します。
もちろん、すべてのコントロールをループし、自動検証(ループスルーして各フォームのXMLを取得してフォーム全体の自動バインドを行う)という共通コードを設定することもできます。
Interface ValidationBase
Property Required as Boolean
テキストまたは数値のみのマスクや2つのサブクラスに組み込まれrestricitonsを持っている場合は...
Interface ValidationNumeric
Property MinVal, MaxVal as double
Interface ValidationText
Property MinLen, MaxLen as double
はありません、それはあなたのためのデータベースに行くことはありません。しかし、これは敷物の下に一杯の荒れ果てた掃除をする。
UIデザイナーでこれらのプロパティ値を設定することもできます。はい、BLをUIでベッドに入れますが、BLのUIが1つしかない場合は、実際にうまく機能します。
今画像UIにどのような作品リストボックス/複数選択、ダブルリストピッカーコントロール、チェックするリストボックス、オプションボタン/チェックボックスのグループボックスのようなものが混在するUI ...
Interface Selector
property Items as list (of string)
property SelectedItems as list (of string)
使用あなたのジェネリックルーチンは、彼らがどのように見えるかを気にすることはできません!サブクラス化されたUI部分は、適切な値を設定/取得するために実装されます。コントロールは、他の項目から単純な値に設定することを許可また
...我々は(そうでなければ、単独で残す、SetValueEquationにtrueの場合、設定された値)SetValueTriggerEquation、ActivatesEquation(ungray /グレー)、「validationEquation」を追加し、 (基本的には、反射を使用しているかのようにバインドされたオブジェクトから値を取得します)Expression Evaluator(ネットタイプを読む)
また、メインフォームをサブクラス化し、すべてのサブコントロールから再帰的にXMLの画面全体を表示し、そのようにシリアル化します。独自のクラスに非UIレイヤーでこれらを実装させ、それを使用してUI状態を完全に(de /)シリアライズし、それらを使用してUIを読み込むことができます(ビジネスオブジェクトに関連する場合)。
それは信じられないほどどのくらい複雑なアプリケーションを簡素化する。私たちは、250K LOCで250種類の用紙を記入する1200+データ入力パネル(...ページ...私たちは厚いクライアントアプリケーションです)を持っています。フォーム定義には各コントロールの「名前」が含まれており、これは画面から生成されたXMLから取得されます。多くの画面にコードがないか、または単純なコードしかないので、おそらく500K LOCを保存しました。すべてのデータバインディング、検証などは、インタフェースを参照する共通ルーチンによって処理されます。
私が言うように、これは大きなアプリでのみ機能します。ただし、機能の90%を開発するのに少なくとも2〜3週間かかります。それを成熟させる2年の開発者の間でおそらく別の月。あなたがICommandとその利便性を気にしているなら、私はあなたのアプリが大きいと思います。私は15-20の適度に複雑なページで投資回収を行います。
tnx。それが私の頭の中で –