0

ウィジェットの編集に使用するフォームがあるとします。特定のウィジェットには属性があります。その属性 (A) の値は、格納された属性 (1、2、3) のリストのいずれかになります。属性のリストは、いくつかのウィジェット タイプで使用されます。

ここで、データの観点から、特定のウィジェットは任意のリストの属性 A を持つことができます (値 1、2、または 3 を含むことができます)。ただし、ビジネス ルールでは、ウィジェット タイプ X の属性 A に値 1 を含めることはできません。

私の質問は、フォームが属性 A のリストに入力するために使用する情報をどこに保存すればよいかということです。

ここで、ウィジェット X、Y、Z に別のフォームを使用していることがありますが、理論的には、同じフォームでこれに対処する必要があります。Widget クラスまたは Attribute クラスに格納できますが、これは実際のオブジェクト情報を表していないと思います (「寿司」は、完全に有効な Food of the Dog クラスであっても、有効な Food of the Dog クラスではないのと同じです)。食べ物、それは犬を説明するものではありません)。犬の編集フォームのフード リストにどのようにデータを入力しますか? ユーザーは気まぐれで、最終的に誰かが犬の寿司を食べたいと思うので、承認されたリスト情報を編集可能にする必要があり、コードを再展開する必要はありません。

これを C# で書いていますが、この質問はかなり言語に依存していないと思います。

ユーザー Blueberry からの応答後に追加:

ありがとう、私の説明がわかりにくかったかもしれません。Widgets テーブル、Attributes テーブル、および Widget_Attributes テーブルが、Widget の特定のプロパティに割り当てることができるAttributesを含む x-ref であると想像してください。これは 1 つの方法ですが、ウィジェットの各プロパティの x-ref テーブルが作成される可能性があるため、コードの臭いのように思えます。そのため、そのタイプのウィジェットに許可されている属性値のみをコントロールに設定する方法を探しています。

現在リードしているアイデアは、属性が有効なウィジェットを示すフラグ列挙型を各属性レコードに追加することです。Dog-Food の例では、Food 寿司には値 1 を持つ EatenBy 列挙型プロパティがあり、列挙型は Human = 1、Dog = 2、Cat = 4 として定義されます。

4

1 に答える 1

0

あなたの質問を正しく理解できれば、コントロールの別の部分でユーザーが選択したデータに基づいて異なる動作をするウィジェットがありますか?

まず、これには正解も不正解もないと思います。それは、ロジックがどれだけ UI に近いかによって異なります。何らかの形でビジネス ロジックの場合は、(コンボ ボックスなどのように) コントロールの外に置きますが、純粋な UI (日時ピッカーのロジックのように) の場合は、コントロールに入ります。

しかし、あなたの特定のケースから私が集めているものから、それは最初のものに近いです。MVC アーキテクチャを使用している場合、このロジックはビューやコントローラーよりもモデルに近いものになるでしょう。

これは、ComboBox が行うことのより複雑なバージョンであると思いますが、これをジェネリックに保つためには、フォームまたはコントロール自体の一部ではなく、非常に特殊なケースになると思います。コードを使用するのはおそらくあなただけですが、一般的なコーディングの実践では、この詳細を自分の管理下に置くことで、少なくともコードの再利用を改善できます。

データの複雑さに応じて、このすべてのデータを内部に持つオブジェクトを作成し、モデルでこれを作成してウィジェットに渡して、コントロールのデータのさまざまなコンポーネントがいつ何をすべきかを知ることができます。ユーザーによって選択されます。IE コントロールが理解するオブジェクトですが、モデル上で生成されます。データが十分に静的である場合、モデルにコールバックする必要は厳密にはありません。これは、初期化時に渡される可能性があります。

それが役立つことを願っています、私の見解です。

于 2012-06-27T03:25:21.697 に答える