我创建了一个带有属性
的Serializable类[XmlAttribute("ToleranceSign"), DefaultValue("1")]
public string ToleranceSign { get; set; }
当我像下面这样序列化这个类时
using (StringWriter writer = new StringWriter())
{
XmlSerializer serial = new XmlSerializer(serializeData.GetType());
XmlSerializerNamespaces xns = new XmlSerializerNamespaces();
xns.Add(string.Empty, string.Empty);
serial.Serialize(writer, serializeData, xns);
writer.Flush();
string serialContent = writer.ToString();
return serialContent;
}
除ToleranceSign之外,所有其他属性都将转换为XML节点。我在声明中做了什么错吗?
答案 0 :(得分:1)
如果ToleranceSign
的值为null
,则会被忽略而不会序列化。
如果ToleranceSign
的值为"1"
,那么[DefaultValue("1")]
将导致它不被序列化。基本上:如果您希望在不null
时始终序列化该属性,请不要包含该属性。
答案 1 :(得分:0)
DefaultValue
属性不会导致值赋值。你需要做那个槽代码。请参阅note。话虽这么说,字符串属性至少应该用String.Empty
初始化,以便序列化。