我有两个班级:
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
列表我没有任何问题。我错过了一些属性吗?
答案 0 :(得分:6)
Value
类需要具有默认构造函数,如果您希望它可序列化的话。例如:
public class Value
{
public string Name { get; set; }
public short StartPosition { get; set; }
public short EndPosition { get; set; }
}
此外,您不需要[Serializable]
属性进行XML序列化,XmlSerializer类完全忽略它。
答案 1 :(得分:0)
可能是你的Value
类型没有可用于在反序列化时创建实例的构造函数吗?