2010-01-25 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Mon, 25 Jan 2010 12:06:39 +0000 (12:06 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Mon, 25 Jan 2010 12:06:39 +0000 (12:06 -0000)
* SerializationMap.cs : allow readonly field as data member.
  Fixed bug #560155.

* XmlObjectSerializerTest.cs : added test for bug #560155.

svn path=/trunk/mcs/; revision=150119

mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/ChangeLog
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization/SerializationMap.cs
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/ChangeLog
mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/XmlObjectSerializerTest.cs

index 2dd79149ff4a2b80cda12554c946e0e40300a312..34782c91ff1b25d93d1e1732fd325837ade0c740 100755 (executable)
@@ -1,3 +1,8 @@
+2010-01-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * SerializationMap.cs : allow readonly field as data member.
+         Fixed bug #560155.
+
 2010-01-08  Atsushi Enomoto  <atsushi@ximian.com>
 
        * SerializationMap.cs, KnownTypeCollection.cs : differentiate
index 81211da0ef340c815d63afcc9b381da7c812f6d9..6a719ba325cf73709f035c2750a6c231ccebf30a 100644 (file)
@@ -547,9 +547,6 @@ namespace System.Runtime.Serialization
                                        GetDataMemberAttribute (fi);
                                if (dma == null)
                                        continue;
-                               if (fi.IsInitOnly)
-                                       throw new InvalidDataContractException (String.Format (
-                                                       "DataMember field {0} must not be read-only.", fi));
                                data_members.Add (CreateDataMemberInfo (dma, fi, fi.FieldType));
                        }
 
index ec7eecefa87f2aa8ead58c103cea4f8f92d8e894..7650b63fcf3afea46df2ed4ac9160dc08c86384a 100644 (file)
@@ -1,6 +1,10 @@
+2010-01-25  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * XmlObjectSerializerTest.cs : added test for bug #560155.
+
 2010-01-08  Atsushi Enomoto  <atsushi@ximian.com>
 
-       * XmlObjectSrializerTest.cs : added test for bug #568763.
+       * XmlObjectSerializerTest.cs : added test for bug #568763.
 
 2009-09-28  Atsushi Enomoto  <atsushi@ximian.com>
 
index 8cf3e245774cfc0e2c374d6305951588bc6f03f2..108f3471430c82ea120b984f801f0b705db14fe5 100644 (file)
@@ -1284,7 +1284,22 @@ namespace MonoTests.System.Runtime.Serialization
                {
                        new DataContractSerializer (typeof (NestedContractType));
                }
-               
+
+               [Test]
+               public void Bug560155 ()
+               {
+                       var g = Guid.NewGuid ();
+                       Person p1 = new Person ("UserName", g);
+                       Assert.AreEqual ("name=UserName,id=" + g, p1.ToString (), "#1");
+                       MemoryStream memStream = new MemoryStream ();
+                       DataContractSerializer ser =  new DataContractSerializer (typeof (Person));
+
+                       ser.WriteObject (memStream, p1);
+                       memStream.Seek (0, SeekOrigin.Begin);
+                       Person p2 = (Person) ser.ReadObject (memStream);
+                       Assert.AreEqual ("name=UserName,id=" + g, p2.ToString (), "#1");
+               }
+
                private T Deserialize<T> (string xml)
                {
                        return Deserialize<T> (xml, typeof (T));
@@ -1699,3 +1714,25 @@ public class AsxEntryInfo
     [DataMember]
     public string AdvertPrompt { get; set; }
 }
+
+// bug #560155
+
+[DataContract]
+public class Person
+{
+       [DataMember]
+       readonly public string name;
+       [DataMember]
+       readonly public Guid Id = Guid.Empty;
+
+       public Person (string nameIn, Guid idIn)
+       {
+               name = nameIn;
+               Id = idIn;
+       }
+
+       public override string ToString()
+       {
+               return string.Format ("name={0},id={1}", name, Id);
+       }
+}