From: Owen R. <exo...@us...> - 2004-11-16 04:41:29
|
Update of /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21969/src/NetReflector/Serialisers Modified Files: IXmlSerialiser.cs XmlArraySerialiser.cs XmlCollectionSerialiser.cs XmlMemberSerialiser.cs Log Message: - XmlArraySerialiser now converts xml element to array element type. Patch courtesy of Oane Stienstra. Index: XmlArraySerialiser.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/XmlArraySerialiser.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** XmlArraySerialiser.cs 15 Nov 2004 05:58:57 -0000 1.2 --- XmlArraySerialiser.cs 16 Nov 2004 04:41:19 -0000 1.3 *************** *** 8,12 **** public class XmlArraySerialiser : XmlCollectionSerialiser { ! public XmlArraySerialiser(MemberInfo member, ReflectorPropertyAttribute attribute) : base(member, attribute) { } public override object Read(XmlNode node, Type instanceType, NetReflectorTypeTable table) --- 8,17 ---- public class XmlArraySerialiser : XmlCollectionSerialiser { ! protected readonly ReflectorTypeConverter converter; ! ! public XmlArraySerialiser(MemberInfo member, ReflectorPropertyAttribute attribute) : base(member, attribute) ! { ! converter = new ReflectorTypeConverter(); ! } public override object Read(XmlNode node, Type instanceType, NetReflectorTypeTable table) *************** *** 18,26 **** for (int i = 0; i < array.Length; i++) { ! // wrap exception? ! array.SetValue(base.ReadValue(nodes[i], table), i); } return array; } } ! } --- 23,31 ---- for (int i = 0; i < array.Length; i++) { ! object value = converter.Convert(elementType, base.ReadValue(nodes[i], table)); ! array.SetValue(value, i); } return array; } } ! } \ No newline at end of file Index: XmlMemberSerialiser.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/XmlMemberSerialiser.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** XmlMemberSerialiser.cs 15 Nov 2004 05:13:02 -0000 1.6 --- XmlMemberSerialiser.cs 16 Nov 2004 04:41:19 -0000 1.7 *************** *** 30,34 **** { object value = member.GetValue(target); ! if (value != null && SerializableValue(value)) { writer.WriteStartElement(attribute.Name); --- 30,34 ---- { object value = member.GetValue(target); ! if (value != null && IsSerializableValue(value)) { writer.WriteStartElement(attribute.Name); *************** *** 43,47 **** } ! private bool SerializableValue(object value) { return (attribute.InstanceTypeKey == null || ReflectorTypeAttribute.GetAttribute(value) != null); --- 43,47 ---- } ! private bool IsSerializableValue(object value) { return (attribute.InstanceTypeKey == null || ReflectorTypeAttribute.GetAttribute(value) != null); Index: XmlCollectionSerialiser.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/XmlCollectionSerialiser.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** XmlCollectionSerialiser.cs 5 Nov 2003 08:29:56 -0000 1.1 --- XmlCollectionSerialiser.cs 16 Nov 2004 04:41:19 -0000 1.2 *************** *** 17,20 **** --- 17,22 ---- foreach (object element in ((IEnumerable)value)) { + if (element == null) continue; + ReflectorTypeAttribute attribute = ReflectorTypeAttribute.GetAttribute(element); if (attribute == null) *************** *** 31,34 **** --- 33,37 ---- } + /// Todo: convert to element type public override object Read(XmlNode node, Type instanceType, NetReflectorTypeTable table) { Index: IXmlSerialiser.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/IXmlSerialiser.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** IXmlSerialiser.cs 15 Nov 2004 05:13:02 -0000 1.2 --- IXmlSerialiser.cs 16 Nov 2004 04:41:19 -0000 1.3 *************** *** 1,3 **** - using System; using System.Xml; --- 1,2 ---- |