繁体   English   中英

如何使用自定义对象列表序列化类?

[英]How to serialize a class with a list of custom objects?

我有两节课:

namespace Something
{
    [Serializable]
    public class Spec
    {
        public string Name { get; set; }

        [XmlArray]
        public List<Value> Values { get; set; }
    }

    [Serializable]
    public class Value
    {
        public string Name { get; set; }

        public short StartPosition { get; set; }

        public short EndPosition { get; set; }

        public Value(string name, short startPosition, short endPosition)
        {
            Name = name;
            StartPosition = startPosition;
            EndPosition = endPosition;
        }
    }
}

当我尝试序列化时

var spec = new Spec();
spec.Name = "test";
spec.Values = new List<Value> { new Value("testing", 0, 2) };

var xmls = new XmlSerializer(spec.GetType());    
xmls.Serialize(Console.Out, spec);

我收到一个错误:

出现InvalidOperationException

有一个错误反映了'Something.Spec'类型

使用string列表我没有任何问题。 我错过了一些属性吗?

如果希望Value类可序列化,则Value类需要具有默认构造函数。 例:

public class Value
{
    public string Name { get; set; }
    public short StartPosition { get; set; }
    public short EndPosition { get; set; }
}

此外,您不需要[Serializable]属性进行XML序列化, XmlSerializer类完全忽略它。

可能是您的Value类型没有可用于在反序列化时创建实例的构造函数吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM