私は、intやdecimalなどのプリミティブ型のプロパティの束を持つWCFデータコントラクトを持っていますDateTime
(もちろん、これは構造体です)。
私の同僚は、それらをすべてnull可能にしてから、nullをチェックすることにより、サービス側で必要な値を検証することを提案しました。理由の一部は、シリアライズ可能なオブジェクトであるため、データコントラクトのコンストラクターで必要な値を強制することはできず、デフォルト値をテストするという頭痛の種を回避できることだと思います。
ただし、クライアントが必要なプロパティを把握できるように、必要なプロパティをコントラクトに暗黙的に含めることも必要です。
だから、次のようなことをする代わりに、
[DataMember]
public Nullable<int> AgencyID { get; set; }
これにより、サービス側でnullをきれいにテストできるようになります。これを行うと、次のようになります。
[DataMember(IsRequired = true, EmitDefaultValue = true)]
public int AgencyID { get; set; }
プロパティに値が割り当てられていない場合、またはデフォルト値が0の場合、これは例外をスローすることを理解しています。これは望ましい動作です。これは、クライアント側で必要なプロパティを適用するためのベストプラクティスですか?すべてをnull可能にして、代わりにサービス側でチェックすることに利点はありますか?