Business Logic Toolkit for .NET
www.bltoolkit.net
Welcome Guest, you are in: Login
|  Home   |  Download   |  Documentation   |  Discussions   |  Issues   |  License   |
RSS RSS

Navigation




Search the wiki
»

PoweredBy
XmlSerialization.cs

using System.IO;
using System.Xml.Serialization;

using NUnit.Framework;

using BLToolkit.Reflection; using BLToolkit.EditableObjects; using BLToolkit.TypeBuilder;

namespace HowTo.TypeBuilder { [TestFixture] public class XmlSerializationTest { [XmlType(AnonymousType = true)] public abstract class MyClassA { public abstract string ValueA { get; set; } }

[XmlType(AnonymousType = true)] [XmlIncludeAbstract(typeof(MyClassA))] [XmlIncludeAbstract(typeof(MyClassC))] public abstract class MyClassB { public abstract string ValueB { get; set; } public abstract MyClassA ValueMyClassA { get; set; } public abstract EditableList<MyClassA> MyList { get; set; } }

[XmlType("abs:MyClassC")] public abstract class MyClassC : MyClassA { }

[Test] public void Test() { MyClassB original = TypeAccessor<MyClassB>.CreateInstance(); MyClassB serialized; XmlSerializer sr = new XmlSerializer(TypeAccessor<MyClassB>.Type);

original.ValueB = "string value B"; original.ValueMyClassA.ValueA = "string value A"; original.MyList.Add(TypeAccessor<MyClassA>.CreateInstance()); original.MyList.Add(TypeAccessor<MyClassC>.CreateInstance()); using (MemoryStream stm = new MemoryStream()) { sr.Serialize(stm, original); stm.Position = 0L; serialized = (MyClassB)sr.Deserialize(stm); }

Assert.That(serialized.ValueB, Is.EqualTo(original.ValueB)); Assert.That(serialized.ValueMyClassA.ValueA, Is.EqualTo(original.ValueMyClassA.ValueA)); Assert.AreEqual(original.MyList.Count, serialized.MyList.Count); Assert.That(serialized.MyList[0] is MyClassA); Assert.That(serialized.MyList[1] is MyClassA); Assert.That(serialized.MyList[1] is MyClassC); Assert.AreEqual(serialized.MyList[0].GetType(), TypeFactory.GetType(typeof(MyClassA))); Assert.AreEqual(serialized.MyList[1].GetType(), TypeFactory.GetType(typeof(MyClassC))); } } }
© 2010 www.bltoolkit.net