我正在尝试确定是否将可选参数传递给我的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可以为空的类型,但我不确定这是否是正确的方法。
答案 0 :(得分:2)
假设您的引用类型也以相同的方式使用null的概念,其中null表示不存在值,可空值的类型是指示值类型成员的可能性的完全可接受的方式。