因爲XmlSerializer不會在字典上工作,所以我在它們上使用XmlIgnore屬性,並使用中介列表<>屬性將字典呈現爲列表,其中的作用是的工作與序列化。但是,我的List <>屬性在反序列化時被忽略。 (沒有引發錯誤,也沒有引發序列化事件。)爲什麼?C#xml反序列化忽略List <>屬性意外
[XmlIgnore]
public Dictionary<string, string> ConnectionStrings { get; set; }
這是應該用於de/serialization的「surrogate」列表屬性。就像我說的,這對序列化有效,但是在反序列化過程中該屬性被忽略。我試圖理解爲什麼/怎麼辦呢什麼....
public List<ConnectionItem> SerializedConnections
{
get
{
return ConnectionStrings.Select(keyPair => new ConnectionItem() { Name = keyPair.Key, ConnectionString = keyPair.Value }).ToList();
}
set
{
ConnectionStrings = new Dictionary<string, string>();
foreach (var ci in value) ConnectionStrings.Add(ci.Name, ci.ConnectionString);
}
}
我想在我的SerializedConnections屬性的set訪問設置一個斷點,但它從來沒有擊中。
我不知道爲什麼Dictionary不可序列化,這並不難。您可以創建自己的SerializableDictionary類並實現IXmlSerializable來序列化數據。我已經做了幾次,但我沒有代碼方便分享。 –