मैं XmlSerializer साथ क्रमबद्धता का एक बहुत ही सरल सा करने के लिए कोशिश कर रहा हूँ:, जबसेटर नहीं कहा जब deserializing संग्रह
<?xml version="1.0" encoding="utf-8"?>
<GroupOfPeople xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<_XmlPeople>
<XmlPerson Id="person1" Name="Fred" />
<XmlPerson Id="person2" Name="Bill" />
<XmlPerson Id="person3" Name="Andy" />
<XmlPerson Id="person4" Name="Nagesh" />
</_XmlPeople>
</GroupOfPeople>
हालांकि:
public struct XmlPerson
{
[XmlAttribute] public string Id { get; set; }
[XmlAttribute] public string Name { get; set; }
}
public class GroupOfPeople
{
private Dictionary<string, string> _namesById = new Dictionary<string, string>();
//pseudo property for serialising dictionary to/from XML
public List<XmlPerson> _XmlPeople
{
get
{
var people = new List<XmlPerson>();
foreach (KeyValuePair<string, string> pair in _namesById)
people.Add(new XmlPerson() { Id = pair.Key, Name = pair.Value });
return people;
}
set
{
_namesById.Clear();
foreach (var person in value)
_namesById.Add(person.Id, person.Name);
}
}
}
सहेजा जा रहा है इस वर्ग के ठीक काम करता है, और मैं मिल मैंने फ़ाइल में फिर से पढ़ा है, मेरे _XmlPeople प्रॉपर्टी सेटर को कभी नहीं कहा जाता है, और इस प्रकार शब्दकोश खाली है। इस वस्तु पर अन्य सभी गुणों को deserialized ठीक मिलता है।
क्या मुझे कुछ याद आ रही है? मैंने विभिन्न संग्रह प्रकारों की कोशिश की है, लेकिन उनमें से कोई भी deserialize।
संपादित: पढ़ें कोड:
try
{
using (var stream = new StreamReader(itemPath))
{
var xml = new XmlSerializer(typeof(GroupOfPeople));
GroupOfPeople item = (GroupOfPeople)xml.Deserialize(stream);
}
}
//snip error stuff
आप कैसे पढ़ते हैं? – Tigran
कोड के साथ संपादित किया गया है। – GazTheDestroyer
सेटटर कभी नहीं कहा जाता है। मेरे पास एक ब्रेकपॉइंट है। – GazTheDestroyer