ドメインのモデルを設計するとき、ほとんどの場合、それらの上にいくつかの.IsSomething
機能があります。 IsNew
およびIsDirty
はデータ永続化の目的では一般的ですが、ビジネスルールの検証にはIsValid
、さらに現在のプロジェクトではIsFraudulent
(ビジネスルールの検証)などです。しかし、私はそれには特別な理由があるのか疑問に思います。Model.Is ___ - プロパティまたはメソッドである必要がありますか?
私はオブジェクトとメソッドを何らかのアクションを実行するものとして記述しているようにプロパティを参照する傾向があります。これらは実際にはアクションを実行しません。コードは呼び出されたときに動的に決定され、読み込み専用ですが、メソッドではなくプロパティとして適合しているため、コードが含まれています。
プロパティでシリアル化の問題が発生する可能性があります。リッチド・ドメイン・モデルは、ロジックと機能が含まれているため、シリアル化がうまく行かない傾向がありますが、サービス境界を超えて何かを移動する必要があるときは、まず定義済みのDTO構造に展開します。
しかし、誰か他の人がこの問題について洞察しているのだろうか?これらをプロパティとしてではなくメソッドとして実装する理由はありますか?
(接線方向に関連し、拡張プロパティは本当にこのような何かに一貫して役立つだろうan answer has already been givenのに。私は、ドメイン固有のロジックを実装するために、通常System.String
上IsSomething()
拡張メソッドの数を、持っている。しかし、プロパティが途中であっても、行くために、私は拡張子を持つ一貫性を保つための方法に固執することをお勧めします)
またはC#5の拡張プロパティのためにあなたの指を渡すことができます:) – SWeko