Update of /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21723/src/NetReflector/Serialisers Modified Files: XmlCollectionSerialiser.cs XmlMemberSerialiser.cs XmlTypeSerialiser.cs XmlDictionarySerialiser.cs IXmlSerialiser.cs Log Message: Allowing Custom Instantiators to be used (used by CruiseControl.NET's Web Dashboard project) Index: XmlDictionarySerialiser.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/XmlDictionarySerialiser.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** XmlDictionarySerialiser.cs 12 Dec 2003 21:30:17 -0000 1.2 --- XmlDictionarySerialiser.cs 7 Mar 2005 05:46:06 -0000 1.3 *************** *** 48,52 **** public override object Read(XmlNode node, Type instanceType, NetReflectorTypeTable table) { ! IDictionary dictionary = ReflectionUtil.CreateInstance(instanceType) as IDictionary; // null check foreach (XmlNode child in XmlElementList.Create(node.ChildNodes)) --- 48,52 ---- public override object Read(XmlNode node, Type instanceType, NetReflectorTypeTable table) { ! IDictionary dictionary = Instantiator.Instantiate(instanceType) as IDictionary; // null check foreach (XmlNode child in XmlElementList.Create(node.ChildNodes)) Index: XmlMemberSerialiser.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/XmlMemberSerialiser.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** XmlMemberSerialiser.cs 16 Nov 2004 04:41:19 -0000 1.7 --- XmlMemberSerialiser.cs 7 Mar 2005 05:46:06 -0000 1.8 *************** *** 10,13 **** --- 10,14 ---- private ReflectorMember member; private ReflectorPropertyAttribute attribute; + private IInstantiator instantiator; public XmlMemberSerialiser(MemberInfo member, ReflectorPropertyAttribute attribute) *************** *** 15,18 **** --- 16,20 ---- this.member = ReflectorMember.Create(member); this.attribute = attribute; + this.instantiator = new DefaultInstantiator(); } *************** *** 76,79 **** --- 78,87 ---- } + public IInstantiator Instantiator + { + get { return instantiator; } + set { instantiator = value; } + } + private void CheckIfMemberIsRequired() { Index: XmlCollectionSerialiser.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/XmlCollectionSerialiser.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** XmlCollectionSerialiser.cs 16 Nov 2004 04:41:19 -0000 1.2 --- XmlCollectionSerialiser.cs 7 Mar 2005 05:46:06 -0000 1.3 *************** *** 36,40 **** public override object Read(XmlNode node, Type instanceType, NetReflectorTypeTable table) { ! IList list = ReflectionUtil.CreateInstance(instanceType) as IList; // null check foreach (XmlNode child in XmlElementList.Create(node.ChildNodes)) --- 36,40 ---- public override object Read(XmlNode node, Type instanceType, NetReflectorTypeTable table) { ! IList list = Instantiator.Instantiate(instanceType) as IList; // null check foreach (XmlNode child in XmlElementList.Create(node.ChildNodes)) Index: IXmlSerialiser.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/IXmlSerialiser.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** IXmlSerialiser.cs 16 Nov 2004 04:41:19 -0000 1.3 --- IXmlSerialiser.cs 7 Mar 2005 05:46:06 -0000 1.4 *************** *** 1,3 **** --- 1,4 ---- using System.Xml; + using Exortech.NetReflector.Util; namespace Exortech.NetReflector *************** *** 7,10 **** --- 8,13 ---- void Write(XmlWriter writer, object target); object Read(XmlNode node, NetReflectorTypeTable table); + + IInstantiator Instantiator { set; get; } } } Index: XmlTypeSerialiser.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/XmlTypeSerialiser.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** XmlTypeSerialiser.cs 15 Nov 2004 05:13:02 -0000 1.3 --- XmlTypeSerialiser.cs 7 Mar 2005 05:46:06 -0000 1.4 *************** *** 12,15 **** --- 12,16 ---- private ReflectorTypeAttribute attribute; private IXmlMemberSerialiser[] serialisers; + private IInstantiator instantiator; public XmlTypeSerialiser(Type type, ReflectorTypeAttribute attribute) *************** *** 17,20 **** --- 18,22 ---- this.type = type; this.attribute = attribute; + this.instantiator = new DefaultInstantiator(); } *************** *** 72,80 **** public object Read(XmlNode node, NetReflectorTypeTable table) { ! object instance = ReflectionUtil.CreateInstance(type); ReadMembers(node, instance, table); return instance; } public void ReadMembers(XmlNode node, object instance, NetReflectorTypeTable table) { --- 74,88 ---- public object Read(XmlNode node, NetReflectorTypeTable table) { ! object instance = instantiator.Instantiate(type); ReadMembers(node, instance, table); return instance; } + public IInstantiator Instantiator + { + get { return instantiator; } + set { instantiator = value; } + } + public void ReadMembers(XmlNode node, object instance, NetReflectorTypeTable table) { |