[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