C# 不考虑字符串属性的可序列化类
我已经用属性创建了一个可序列化的类C# 不考虑字符串属性的可序列化类,c#,xml,serialization,C#,Xml,Serialization,我已经用属性创建了一个可序列化的类 [XmlAttribute("ToleranceSign"), DefaultValue("1")] public string ToleranceSign { get; set; } 当我像下面这样序列化这个类时 using (StringWriter writer = new StringWriter()) { XmlSerializer serial = new XmlSerializer(serial
[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;
}
除公差符号外,所有其他属性都转换为XML节点。我在声明中有什么错误吗 如果
公差符号
的值为null
,则该值将被忽略且不会序列化
如果
公差符号
的值为“1”
,则[DefaultValue(“1”)]
将导致其未序列化。基本上:如果希望在非null
时始终序列化该属性,DefaultValue
属性不会导致赋值,则不包括该属性。你需要通过代码来做这件事。看。也就是说,字符串属性至少应该初始化为string.Empty
,以便序列化。谢谢。我已经删除了DefaultValue属性,它工作得很好。因为我将“1”赋值给公差符号,所以它没有序列化。我一直认为DefaultValue的工作方式与DB中的默认值类似(即,如果未分配任何值,它将添加默认值)!!我正在给那个属性赋值“1”。