如何确定是否提供了可空的datammember值

本文关键字:datammember 何确定 是否 | 更新日期: 2023-09-27 17:50:27

我正在实现一个WCF/Soap服务操作的过程中,并且已经定义了一些不需要的数据契约成员(IsRequired = false)。

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

  • 客户端为contract元素提供一个空值(i:nil="true")
  • 客户端不提供可选元素(即他们发送给我部分合同)

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

如何确定是否提供了可空的datammember值

一种解决方法是在数据契约中添加boolean MemberSupplied类型成员。例如:

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