[Mono-list] XML Serialization - difference between WinCLR and Mono runtime

Daniel Lo Nigro lists at dan.cx
Sat May 4 07:27:24 UTC 2013


Have you tried this with Mono 3.0?


On Wed, May 1, 2013 at 2:08 PM, MarLOne <InfoSeeker002 at gmail.com> wrote:

> Hi,
>
> Not sure if this has been reported - there is difference in runtime
> treatment of XML Serialization between CLR and Mono runtime.
>
> I have a class like this:
> using System;
> using System.Collections.Generic;
> using System.Linq;
> using System.Text;
> using System.Runtime.Serialization;
>
> namespace SerializationDemos
> {
>     [ Serializable ]
>     public class WithAutoProperty
>     {
>         // Read only properties
>         public String Name { get; private set; } // private setter
>         public Int32 Age { get; private set; }     // private setter
>
>         public WithAutoProperty() { }
>
>         public WithAutoProperty( string name, Int32 age )
>         {
>             this.Name = name;
>             this.Age = age;
>         }
>     }
> }
>
> and I have a nunit test code like this:
>         [Test]
>         public void WithUsingAutoProperty()
>         {
>             String expectedName = Guid.NewGuid().ToString();
>             Int32 expectedAge = 28;
>             WithAutoProperty p = new WithAutoProperty( expectedName,
> expectedAge );
>             UsingXmlSerialization( p, ( a, b ) =>
>                     {
>                         Assert.IsNotNull( a );
>                         Assert.IsTrue( a is WithAutoProperty );
>                         Assert.IsNotNull( b );
>                         WithAutoProperty g = b as WithAutoProperty;
>                         Assert.AreEqual( expectedName, g.Name );
>                         Assert.AreEqual( expectedAge, g.Age );
>                     } );
>         }
>
>         public void UsingXmlSerialization(Object expected, Action<object,
> object> testNow)
>         {
>             StringBuilder buffer = new StringBuilder();
>             Type t = expected.GetType();
>             using ( XmlWriter writer = XmlWriter.Create( buffer ) )
>             {
>                 XmlSerializer ser = new XmlSerializer( t );
>                 ser.Serialize( writer, expected );
>             }
>
>             String xmlDoc = buffer.ToString();
>             Console.WriteLine( "Xml: {0}", xmlDoc );
>             buffer = null;
>
>             Object regen = null;
>             using ( XmlReader reader = XmlReader.Create( new StringReader(
> xmlDoc ) ) )
>             {
>                 XmlSerializer ser = new XmlSerializer( t );
>                 regen = ser.Deserialize( reader );
>                 Assert.IsNotNull( regen );
>             }
>             testNow( expected, regen );
>         }
>
> I built an assembly in VS2010 using .Net4.
>
> Naturally according to the .Net specification, the test method
> WithUsingAutoProperty() fails with a message like this:
> System.InvalidOperationException : Unable to generate a temporary class
> (result=1).
> error CS0200: Property or indexer '
> SerializationDemos.WithAutoProperty.Name'
> cannot be assigned to -- it is read only
> error CS0200: Property or indexer 'SerializationDemos.WithAutoProperty.Age'
> cannot be assigned to -- it is read only
>
> Then I took the assembly over to my Ubuntu 12.04 with Mono running and
> NUnit
> ran through that method with a green bar.
>
> This difference in behaviour is a source of concern.
>
> Has anyone discovered this? I am using Mono-runtime version
> 2.10.8.1-5~dhx1~precise1.
>
> It appears the Mono runtime simply ignoring the private accessor of the
> getters and setting the value anyway in contravention to the specification.
>
> I have the same result if I rebuild this project with MonoDevelop 3.0.3.2
> in
> Ubuntu 12.04. Hence it does not indicate the generation of IL code at fault
> but it is in the runtime.
>
> MarL
>
>
>
> --
> View this message in context:
> http://mono.1490590.n4.nabble.com/XML-Serialization-difference-between-WinCLR-and-Mono-runtime-tp4659562.html
> Sent from the Mono - General mailing list archive at Nabble.com.
> _______________________________________________
> Mono-list maillist  -  Mono-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-list/attachments/20130504/6353552d/attachment.html>


More information about the Mono-list mailing list