确定是否在 WCF SOAP 服务中传递了可选参数

本文关键字:参数 服务 是否 WCF SOAP | 更新日期: 2023-09-27 18:32:56

我正在尝试确定可选参数是否已传递给我的 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);

如果我将测试方法定义为

    public void TestMethod(TestObject obj)
    {
        Debug.WriteLine(obj.OptionalBooleanField);
        Debug.WriteLine(obj.OptionalIntegerField);
        Debug.WriteLine(obj.OptionalStringField);
    }

我的问题是,如果我在没有指定输入参数的情况下对 TestMethod 进行 SOAP 调用,则 OptionalIntegerField 和 OptionalBooleanField(作为值类型)将设置为它们的默认值(0 和 false)。 我需要确定是否传入了可选参数。

我的问题是处理这个问题的适当方法是什么?我正在考虑使我的 OptionalIntegerField 和 OptionalBooleanField 类型为空,但我不确定这是否是正确的方法。

确定是否在 WCF SOAP 服务中传递了可选参数

假设您的引用类型也以相同的方式使用 null 的概念,其中 null 表示不存在值,则可为 null 的值类型是指示值类型成员可能性的完全可接受的方式。