15

私は今日、WCF契約でこれに遭遇しました:

[DataMember(IsRequired = true)]
public DateTime? LastModified { get; set; } 

IsRequired = Trueとnull許容の結果は何DateTimeですか?それらは互いに矛盾しているように見えます。

4

2 に答える 2

8

nullで初期化し、ユーザーが有効な日付を設定できるようにする場合は、意味があります。したがって、送信する前に、ユーザー入力を検証できます。

これがあなたの質問に答えるかもしれない同様の矛盾です。

IsRequiredとの相互作用

DataMemberAttribute属性にはIsRequiredプロパティがあります(デフォルトはfalseです)。このプロパティは、特定のデータメンバーが、逆シリアル化されるときにシリアル化されたデータに存在する必要があるかどうかを示します。IsRequiredがtrueに設定され(値が存在する必要があることを示します)、EmitDefaultValueがfalseに設定されている場合(デフォルト値に設定されている場合は値が存在してはならないことを示します)、このデータメンバーのデフォルト値は結果が矛盾するため、シリアル化されました。このようなデータメンバーがデフォルト値(通常はnullまたはゼロ)に設定されていて、シリアル化が試行されると、SerializationExceptionがスローされます。

于 2011-10-14T11:40:26.933 に答える
3

推測:「LastModified」(=必須)のノードが必要ですが、内容は空(=値はnull)にすることができます。

于 2011-10-14T11:16:32.240 に答える