我应该如何标记属性,如果它们具有默认值,则不应序列化?例如,如果我有布尔值,那么如果只设置为true,那么shoudl将被序列化,与可空值相同,如果它们为null,我不想将它们包含在我的序列化文件中。
答案 0 :(得分:22)
好的,我自己找到了。它是[DefaultValue(false)]
。如果我用这个attr标记一些属性,那么只有当它与()中的值不同时才会被序列化。
答案 1 :(得分:4)
有指定属性这样的东西。我找不到msdn文档,但this article应该有帮助。 基本上你必须写这样的东西:
//this property would not be serialized if it contains String.Empty value
public string PropertyName { get; set; }
[XmlIgnore]
public bool PropertyNameSpecified
{
get { return PropertyName != String.Empty; }
}
答案 2 :(得分:0)
@kosnkov的回答使我处在正确的轨道上。就我而言,无论是否进行反序列化,我都希望默认使布尔值为true。我最终得到了这样的东西:
public class Person {
public string Name {get;set;}
[DefaultValue(true)]
public bool IsAdult {get;set;} = true
}
所以这个杰森
{"Name" :"SomePerson"}
结果进入该对象
{ Name : "SomePerson", IsAdult : true}
说明: