[英]Serialize T that contains List<T>
我要序列化MyClass
,这是一个包含列表MyClass
。
在XML中,我只想编写myClass.Name
,然后在反序列化时,然后找到哪个MyClass
应该在其他MyClass
。 我有以下代码将MyClass
列表正确序列化为string
列表。 但是,它不会反序列化字符串列表。
//List of actual object. It's what I use when I work with the object.
[XmlIgnore]
public List<TaskConfiguration> ChildTasks { get; set; }
//Used by the serializer to get the string list, and used
//by the serializer to deserialize the string list to.
[XmlArray("ChildTasks")]
public List<string> ChildTasksSurrogate
{
get
{
List<string> childTaskList = new List<string>();
if (ChildTasks != null)
childTaskList.AddRange(ChildTasks.Select(ct => ct.Name).ToList());
if (_childTasksSurrogate != null)
childTaskList.AddRange(_childTasksSurrogate);
//Clears it not to use it when it serializes.
_childTasksSurrogate = null;
return childTaskList;
}
set
{
_childTasksSurrogate = value;
}
}
[XmlIgnore]
private List<string> _childTasksSurrogate;
如我所说,序列化有效。 问题在于反序列化。 反序列化之后, MyClass._childTasksSurrogate
为null
。
问题与XmlSerializer
如何反序列化Xml有关:我认为XmlSerializer
将分配整个属性(读取: myList = DeserializedList)
,而看起来它添加了所有元素(读取: myList.AddRange(DeserializedList)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.