Serializable类不考虑字符串属性

时间:2013-12-17 11:32:38

标签: c# xml serialization

我创建了一个带有属性

的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节点。我在声明中做了什么错吗?

2 个答案:

答案 0 :(得分:1)

如果ToleranceSign的值为null,则会被忽略而不会序列化。

如果ToleranceSign的值为"1",那么[DefaultValue("1")]将导致它不被序列化。基本上:如果您希望在不null时始终序列化该属性,请不要包含该属性。

答案 1 :(得分:0)

DefaultValue属性不会导致值赋值。你需要做那个槽代码。请参阅note。话虽这么说,字符串属性至少应该用String.Empty初始化,以便序列化。