オプションのパラメーターが WCF サービスに渡されたかどうかを判断しようとしています。たとえば、次のように定義された単純な入力オブジェクトがあるとします。
[DataContract]
public class TestObject
{
[DataMember(IsRequired=false)]
public int OptionalIntegerField { get; set; }
[DataMember(IsRequired = false)]
public bool OptionalBooleanField { get; set; }
[DataMember(IsRequired = false)]
public string OptionalStringField { get; set; }
}
そして、次のように定義されたサービス契約
[OperationContract(Name = "TestMethod")]
void TestMethod(TestObject obj);
TestMethod を次のように定義している場合
public void TestMethod(TestObject obj)
{
Debug.WriteLine(obj.OptionalBooleanField);
Debug.WriteLine(obj.OptionalIntegerField);
Debug.WriteLine(obj.OptionalStringField);
}
私の問題は、入力パラメーターを指定せずに TestMethod への SOAP 呼び出しを行うと、OptionalIntegerField と OptionalBooleanField (Value 型) が既定値 (0 と false) に設定されることです。オプションのパラメーターが渡されたかどうかを判断する必要があります。
私の質問は、これに対処する適切な方法は何ですか? OptionalIntegerField と OptionalBooleanField を null 許容型にすることを考えていましたが、それが正しいアプローチかどうかはわかりません。