* ObjectReader.cs, ObjectWriter.cs: FIXME cleaning.
[mono.git] / mcs / class / corlib / System.Runtime.Serialization.Formatters.Binary / ObjectWriter.cs
index da322fe28b92dc30986fd38f438ab3824f253740..59786af15842f08b29728271caa1e9cddb28caf1 100644 (file)
@@ -5,14 +5,13 @@
 //\r
 // (C) 2003 Lluis Sanchez Gual\r
 \r
-// FIXME: Implement the missing binary elements\r
-\r
 using System;\r
 using System.IO;\r
 using System.Collections;\r
 using System.Runtime.Serialization;\r
 using System.Runtime.Remoting.Messaging;\r
 using System.Reflection;\r
+using System.Globalization;\r
 \r
 namespace System.Runtime.Serialization.Formatters.Binary\r
 {\r
@@ -145,8 +144,12 @@ namespace System.Runtime.Serialization.Formatters.Binary
                        writer.Write (members.Length);\r
 \r
                        // Names of fields\r
-                       foreach (FieldInfo field in members)\r
-                               writer.Write (field.Name);\r
+                       foreach (FieldInfo field in members) {\r
+                               if (field.DeclaringType == InstanceType)\r
+                                       writer.Write (field.Name);\r
+                               else\r
+                                       writer.Write (field.DeclaringType.Name + "+" + field.Name);\r
+                       }\r
 \r
                        // Types of fields\r
                        foreach (FieldInfo field in members)\r
@@ -382,9 +385,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                \r
                TypeMetadata CreateMemberTypeMetadata (Type type)\r
                {\r
-                       // This environment variable is only for test and benchmarking pourposes.\r
-                       // By default, mono will always use IL generated class serializers.\r
-                       if (Environment.GetEnvironmentVariable("MONO_REFLECTION_SERIALIZER") == null) {\r
+                       if (!BinaryCommon.UseReflectionSerialization) {\r
                                Type metaType = CodeGenerator.GenerateMetadataType (type, _context);\r
                                return (TypeMetadata) Activator.CreateInstance (metaType);\r
                        }\r
@@ -758,7 +759,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                                        break;\r
 \r
                                case TypeCode.Decimal:\r
-                                       writer.Write ((decimal) value);\r
+                                       writer.Write (((decimal) value).ToString (CultureInfo.InvariantCulture));\r
                                        break;\r
 \r
                                case TypeCode.Double:\r