I've implemented a few classes with custom XML serialization. work's fine,
but when a put more then one instance of that class into a container, then
serialization works, but when Deserializing only the first instance is
worked on - at which point all processing for the remaining elements is
abandoned... I'm sure it's probably easy to fix, anyone come across this
before?
Here's a test fixture to demonstrate my problem:
[TestFixture]
public class SettingsConverterFixture
{
[Test]
public void MyContainerConvert()
{
XmlSerializer serializer = new
XmlSerializer(typeof(MyContainer));
MemoryStream stream = new MemoryStream();
MyContainer original = new MyContainer();
original.Value1 = new CustomValue("1");
original.Value2 = new CustomValue("2");
Assert.AreEqual("1", original.Value1.Value);
Assert.AreEqual("2", original.Value2.Value);
serializer.Serialize(stream, original);
stream.Seek(0, SeekOrigin.Begin);
MyContainer reloaded =
(MyContainer)serializer.Deserialize(stream);
Assert.AreEqual("1", reloaded.Value1.Value);
Assert.IsNotNull(reloaded.Value2); // blows up here
Assert.AreEqual("2", reloaded.Value2.Value);
}
}
public class MyContainer
{
public CustomValue Value1;
public CustomValue Value2;
}
public class CustomValue : IXmlSerializable
{
private string _value;
public string Value
{
get { return _value; }
}
public CustomValue(string value)
{
_value = value;
}
public CustomValue()
{
}
#region IXmlSerializable Members
public XmlSchema GetSchema()
{
return null;
}
public void ReadXml(System.Xml.XmlReader reader)
{
_value = reader.ReadString();
}
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteString(_value);
}
#endregion
}
===================================
This list is hosted by DevelopMentorĀ® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com