2011-11-09 13 views
1

ビューモデルパターンを尊重するために私のコードをリファクタリングします。私もAutoMapperを使いました。今、「必須」と「DisplayName」アノテーションに関連する質問があります。もともと私はこれらの注釈をモデルに設定しました。私はこれが最高の場所だと思った。しかし、今では私が思っている私のビューにviewModelを使用しましたビューがビューモデル(モデルエンティティではない)に基づいている場合、データ注釈は検出されません

私のモデルからビューモデルクラスに 'DisplayName'と 'Required'アノテーションを移動する必要がありますか?

私のモデルの注釈が私のビューで検出されなくなったことに気付きました(現在はビューモデルに基づいています)。

ありがとうございました。

答えて

0

実際、アノテーションはビューモデルを持つ理由の1つです。なぜなら、特定のビューでのみ意味のある注釈でドメインクラスを汚染する必要がないからです。

すべてを1か所に置いて、本当にDRYになるのは魅力的ですが、ドメインモデルはあなたの意見に何が入っていても全く興味がないかもしれません。彼の責任ではありません。それは自分でと単一責任を繰り返さない間の共通の戦いだ、あなたははい、それらの間のスイートスポット:)

+0

@ rich.okelly:ありがとうございました、あなたは私を多く助けました。 – Bronzato

1

短い答えを見つけなければなりません。

Reflectionは、それぞれのマークアップにどの属性を付ける必要があるかを把握するために、モデルのタイプ(ビューで宣言されている)で使用されます。

+0

Bartosz:ユーザーの情報に基づいて3つの異なるビューがある場合、いくつかの「必須」注釈を複製しますか?ウェルは常に "物事を複製しない"と言いましたが、このカスでは選択がありません。 – Bronzato

+0

共通プロパティの場合は、これらのプロパティと属性を持つ基本クラスを作成し、それらをサブクラス化できます。ただし、同じ情報を正確に要求している場合、ビューは同じビューモデルタイプを共有できます。 MVVMパターンのポイントは、ビューをドメインモデルから分離することですが、必ずしもビューごとにビューモデルが必要というわけではありません。 –

+1

さて、そこにDRY(「自分自身を繰り返さないでください)」という言葉がありますが、そこには「一責任」というものもあります。ビュー注釈付きのドメインモデルはDRYですが、SRは中断されます。スイートスポットを探すには常にあなたに任せてください:) – Bartosz

関連する問題