お客様のために、私たちはいくつかのWCF Webサービスを開発しています。私たちのメッセージコントラクトは、クラスとそのプロパティの上にDataContract属性とDataMember属性を使用して定義します。 DataMember属性にはいくつかの余分な規則が追加されています。たとえば、プロパティが常に使用可能な場合は、(IsRequired = true)を使用します。これを示す。これらのルールは、メッセージの受信時または送信時にチェックされます。 WCF IsRequired属性ジレンマ
[DataContract]
public class TestClass
{
[DataMember(IsRequired = true)]
public int RequiredValue { get; set; }
}
は、しかし、当社のテスト中に、我々はそれが、両方を使用して、だから私は、このプロパティ、EmitDefaultValue = falseのを発見したいくつかの読書を持つようRequiredValueFieldは、ヌルで初期化されるため、クライアント側では、動作しないことに気づいた私いくつかのクライアントが
RequiredValue = 0
を初期化し、サービスのメソッドを呼び出す場合
[DataContract]
public class TestClass
{
[DataMember(IsRequired = true, EmitDefaultValue=false)]
public int RequiredValue { get; set; }
}
望ましい結果を得ることが、仮定、それが再びエラーが発生します。 どうすれば私のAPIusersに、ゼロを含むこのメンバに何かを渡すことができるオプションを自由にすることができますが、省略すると、エラーが返されますか?