0

MyClassリストを含むクラスであるをシリアル化したいMyClass

XMLでは、書きたいだけですmyClass.Name。それを逆シリアル化するとMyClass、どちらが他のどのにあるべきかがわかりますMyClassMyClassのリストをのリストに適切にシリアル化する次のコードがあります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

問題は、Xmlを逆シリアル化する方法に関連していました:プロパティ全体を割り当てるXmlSerializerと思いました(読み取り: 、すべての要素を追加するように見えます(読み取り:。XmlSerializermyList = DeserializedList)myList.AddRange(DeserializedList)

于 2012-08-28T19:23:16.893 に答える