ShouldSerialize pattern and DataContractSerializer

北战南征 提交于 2019-11-28 11:39:31

AFAIK, ShouldSerialize* does not work with datacontract serializer. It is useless in the Kevin answer. You can remove it. Unfortunatly, the code given only work if you handle null value.

Here is a more generic solution: It returns null value depending of a given condition.

    [DataContract]
    public class Person
    {
      private string firstName;
      [DataMember(IsRequired = false, EmitDefaultValue = false)]
      public string FirstName
      {
        get
        {
            //Put here any condition for serializing
            return string.IsNullOrWhiteSpace(firstName) ? null : firstName;
        }
        set
        {
            firstName = value;
        }
      }
    }

You should set the IsRequired attribute on the DataMember:

[DataContract]
public class Person
{
  [DataMember(IsRequired = False, EmitDefaultValue = False)]
  public string FirstName { get; set; }
  ...
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!