0
我已經看過這裏(和其他地方)的任何問題的答案,我還沒有找到任何東西。Xml使用嵌套列表的自定義列表的序列化
我有一個派生自List的類,並且包含另一個List。當我序列化爲XML時,內部集合的內容不包含在內。
這裏是一個非常簡單的例子:
[Serializable()]
public class MyList<T> : List<T>
{
protected List<T> _nestedList= new List<T>();
public List<T> NestedList
{
get { return _nestedList; }
set { _nestedList = value; }
}
}
class Program
{
static void Main(string[] args)
{
MyList<int> ints = new MyList<int>();
ints.Add(1);
ints.Add(2);
ints.NestedList.Add(3);
ints.NestedList.Add(4);
string xml;
var xmlSerializer = new XmlSerializer(ints.GetType());
using (var memoryStream3 = new MemoryStream())
{
xmlSerializer.Serialize(memoryStream3, ints);
xml = Encoding.UTF8.GetString(memoryStream3.ToArray());
}
}
}
這裏的XML字符串:
<?xml version="1.0"?>
<ArrayOfInt xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<int>1</int>
<int>2</int>
</ArrayOfInt>
通知缺乏NestedList的。
我已經嘗試過NestedList上的各種屬性,如XmlArray或XmlArrayItem,但這些都不起作用。
我也知道這不會正確反序列化。真正的模型比這更復雜;此集合位於另一個對象中,該對象也被標記爲可序列化。
行爲是一樣的:外部列表序列化,但內部沒有。我試圖縮小這個問題的範圍,所以我正在展示這個較小的例子。
在此先感謝!
編輯:它看起來像這是設計,並且XmlSerializer不包括在序列化過程中的集合的屬性。所以我不得不做自定義序列化。
可能的重複[當一個類從List <>繼承時,XmlSerializer不會序列化其他屬性](http://stackoverflow.com/questions/5069099/when-a-class-is-inherited-from-列表XmlSerializer的-犯規序列化,其他-ATT) – BartoszKP 2014-10-28 17:19:33