C#.Net如何确定是否提供了可空的DataMember值

时间:2013-01-03 11:46:08

标签: c# soap datacontract optional datamember

我正在实施WCF / Soap服务操作,并且已将多个数据协定成员定义为不需要(IsRequired = false)。

我的问题涉及以下两种情况......

  • 客户提供合约元素的空值(i:nil =“true”)
  • 客户端不提供可选元素(即他们向我发送部分合同)

这个问题对于复杂和可空的基元类型都很重要。根据我的判断,.Net序列化程序在两种情况下都返回null,所以我的问题是,是否有人可以推荐一种方法来确定SOAP请求中是否提供了可选参数?

1 个答案:

答案 0 :(得分:0)

一种解决方法是在数据协定中添加布尔 MemberSupplied 类型成员。例如:

[DataContract]
public class EmployeeSearchParams
{
    [DataMember]
    public Employee Manager {get; set;}

    [DataMember]
    public bool ManagerSupplied {get; set;}
}