[Mono-devel-list] Regression in Soap serialization
Kamil Skalski
kamil.skalski at gmail.com
Mon Aug 1 07:18:40 EDT 2005
This patch http://lists.ximian.com/pipermail/mono-patches/2005-July/061773.html
caused regression in serialization example from
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnonserializedattributeclasstopic.asp
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap;
//using System.Runtime.Serialization.Formatters.Binary;
public class Test {
public static void Main() {
//Creates a new TestSimpleObject object.
TestSimpleObject obj = new TestSimpleObject();
Console.WriteLine("Before serialization the object contains: ");
obj.Print();
//Opens a file and serializes the object into it in binary format.
Stream stream = File.Open("data.xml", FileMode.Create);
SoapFormatter formatter = new SoapFormatter();
//BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);
stream.Close();
//Empties obj.
obj = null;
//Opens file "data.xml" and deserializes the object from it.
stream = File.Open("data.xml", FileMode.Open);
formatter = new SoapFormatter();
//formatter = new BinaryFormatter();
obj = (TestSimpleObject)formatter.Deserialize(stream);
stream.Close();
Console.WriteLine("");
Console.WriteLine("After deserialization the object contains: ");
obj.Print();
}
}
// A test object that needs to be serialized.
[Serializable()]
public class TestSimpleObject {
public int member1;
public string member2;
public string member3;
public double member4;
// A field that is not serialized.
[NonSerialized()] public string member5;
public TestSimpleObject() {
member1 = 11;
member2 = "hello";
member3 = "hello";
member4 = 3.14159265;
member5 = "hello world!";
}
public void Print() {
Console.WriteLine("member1 = '{0}'", member1);
Console.WriteLine("member2 = '{0}'", member2);
Console.WriteLine("member3 = '{0}'", member3);
Console.WriteLine("member4 = '{0}'", member4);
Console.WriteLine("member5 = '{0}'", member5);
}
}
gives exception
Unhandled Exception: System.TypeInitializationException: An exception
was thrown by the type initializer for
System.Runtime.Serialization.Formatters.Soap.SoapTypeMapper --->
System.ArgumentException: Key duplication when adding:
nonPositiveInteger http://www.w3.org/2001/XMLSchema
in <0x001d0> System.Collections.Hashtable:PutImpl (System.Object key,
System.Object value, Boolean overwrite)
in <0x00012> System.Collections.Hashtable:Add (System.Object key,
System.Object value)
in <0x00064> System.Runtime.Serialization.Formatters.Soap.SoapTypeMapper:RegisterType
(System.Type type, System.String name, System.String namspace, Boolean
reverseMap)
in <0x00060> System.Runtime.Serialization.Formatters.Soap.SoapTypeMapper:RegisterType
(System.Type type)
in <0x002e9> System.Runtime.Serialization.Formatters.Soap.SoapTypeMapper:InitMappingTables
()
in <0x0011b> System.Runtime.Serialization.Formatters.Soap.SoapTypeMapper:.cctor
()--- End of inner exception stack trace ---
in <0x00000> <unknown method>
in <0x000c5> System.Runtime.Serialization.Formatters.Soap.SoapFormatter:Serialize
(System.IO.Stream serializationStream, System.Objectgraph,
System.Runtime.Remoting.Messaging.Header[] headers)
in <0x00015> System.Runtime.Serialization.Formatters.Soap.SoapFormatter:Serialize
(System.IO.Stream serializationStream, System.Objectgraph)
in <0x00071> Test:Main ()
--
Kamil Skalski
http://nazgul.omega.pl
More information about the Mono-devel-list
mailing list