単純なエンティティトランスレータを使用して、DTOの値を「実際の」サーバー側のビジネスオブジェクトにマップするWebサービスを作成しました。この演習の一環として。明示的に設定されたnull値と、値を設定していないクライアントとの間に「興味深い」区別があります。
問題は基本的に、クライアントが明示的に値を設定していない場合に実際のビジネスオブジェクトにデフォルト値を設定したいということですが、標準のnull許容型を使用すると、クライアントが明示的に「これをnullに設定」を意味したかどうかを判断する方法がありません。または単にそれを設定しません。
ここでの解決策は、明らかにある種の「フラグ」です。
ビジネスオブジェクト内では、プロパティセッター内に設定されたプライベート「IsDirty」フラグを使用してフィールドの状態を内部的に追跡できますが、DTOは実際にはインターフェイスのみを指定するため、このデータを公開することを意味します。これにより、多くの実装オプションが残ります。言語はC#(静的に型付けされている)なので...
- 各プロパティに「IsSet」フラグを公開できますか?
- 各プロパティを.Valueプロパティと.IsSetプロパティを持つクラスとして公開できますか?などなど。
データ契約でこれらの「フラグ」をどのように公開することを選択しますか?ここでは、このためのベストプラクティスとして何を考えますか?
これについてのご意見をいただければ幸いです。