0

オプションのパラメーターが 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 許容型にすることを考えていましたが、それが正しいアプローチかどうかはわかりません。

4

1 に答える 1

2

参照型も同じように null の概念を使用していると仮定すると、null は値が存在しないことを意味し、null 許容値型は、値型メンバーの可能性を示す完全に受け入れられる方法です。

于 2012-04-30T23:06:46.890 に答える