0

我想序列化一个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.

4

1 回答 1

0

问题与如何XmlSerializer反序列化 Xml 有关:我认为XmlSerializer将分配整个属性(读取:myList = DeserializedList),而看起来它添加了所有元素(读取:myList.AddRange(DeserializedList).

于 2012-08-28T19:23:16.893 回答