[Mono-list] Problems with Serialisation

Lluis Sanchez lluis@ximian.com
Wed, 24 Mar 2004 21:06:49 +0100


This bug is now fixed in CVS.

On dj, 2004-03-18 at 13:03, Michael Kämpf wrote:
> I tried the following code example. It works fine using the Microsoft
> Csharp-Compiler, but doesn't under Mono
> 
> ----------------------------------------
> 
> using System;
> 
> using System.Xml;
> using System.Xml.Serialization;
> using System.IO;
> 
> namespace TestSerialisation
> {
> 	/// <summary>
> 	/// Zusammenfassung für Class1.
> 	/// </summary>
> 	public class Class1
> 	{
> 		/// <summary>
> 		/// Der Haupteinstiegspunkt für die Anwendung.
> 		/// </summary>
> 		[STAThread]
> 		static void Main(string[] args)
> 		{
> 			TestNS.ExponentialDistribution expDist = new
> TestNS.ExponentialDistribution();
> 
> 			TestNS.ElementAttributeMatrix2 attrib = new
> TestNS.ElementAttributeMatrix2();
> 			TestNS.Distribution attrib2 = new TestNS.Distribution();
> 			// dosn't work
> 			attrib.SetValue(0, expDist);
> 
> 			// work
> 			//attrib.SetValue(0, attrib2);
> 
> 			// error while serialisation
> 			XmlSerializer ser2 = new
> XmlSerializer(typeof(TestNS.ElementAttributeMatrix2));
> 			TextWriter writer2 = new StreamWriter("class2.xml");
> 			ser2.Serialize(writer2, attrib);
> 			writer2.Close();
> 
> 			Console.WriteLine("Return-Taste drücken ...");
> 			Console.ReadLine();
> 		}
> 	}
> }
> 
> namespace TestNS
> {
> 	[Serializable()]
> 	public class Distribution
> 	{
> 		public Distribution() { }
> 	}
> 
> 	[Serializable()]
> 	public class ExponentialDistribution : TestNS.Distribution
> 	{
> 		private double		m_Lambda = double.NaN;
> 
> 		public ExponentialDistribution()
> 		{
> 		}
> 
> 		public double Lambda
> 		{
> 			set { this.m_Lambda = value; }
> 			get { return this.m_Lambda; }
> 		}
> 	}
> 
> 	[Serializable]
> 	public class ElementAttributeMatrix2
> 	{
> 		private object[] m_Values2;
> 
> 		#region constructors
> 
> 		public ElementAttributeMatrix2()
> 		{
> 		}
> 
> 		#endregion
> 
> 		//public void SetValue(int x, TestNS.ExponentialDistribution2 _Dist)
> 		public void SetValue(int x, object _Dist)
> 		{
> 			this.m_Values2 = new object[1];
> 			((object[]) this.m_Values2)[0] = new object[1];
> 			((object[]) ((object[]) this.m_Values2)[0])[0] = new object[x + 1];
> 			((object[]) ((object[]) ((object[]) this.m_Values2)[0])[0])[0] = _Dist;
> 		}
> 
> 		[XmlArrayItem(typeof(object))]
> 		[XmlArrayItem(typeof(object[]))]
> 		[XmlArrayItem(typeof(TestNS.Distribution))]
> 		[XmlArrayItem(typeof(TestNS.Distribution[]))]
> 		[XmlArrayItem(typeof(TestNS.ExponentialDistribution))]
> 		[XmlArrayItem(typeof(TestNS.ExponentialDistribution[]))]
> 		public object[] MatrixValues
> 		{
> 			set { this.m_Values2 = value; }
> 			get { return this.m_Values2; }
> 		}
> 	}
> }
> 
> ----------------------------------------
> 
> Can you help me?
> 
> 
> with friendly reguards
> Michael Kaempf
> 
> _______________________________________
> Michael Kaempf
> 
> Email: michael.kaempf@fakt-software.de
>        michael.kaempf@s2001.tu-chemnitz.de
> Tel.: 0175/7909349
>       0371/9097234
> 
> _______________________________________________
> Mono-list maillist  -  Mono-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list