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
。