2005-11-30 Robert Jordan <robertj@gmx.net>
authorRobert Jordan <robertj@gmx.net>
Wed, 30 Nov 2005 21:58:38 +0000 (21:58 -0000)
committerRobert Jordan <robertj@gmx.net>
Wed, 30 Nov 2005 21:58:38 +0000 (21:58 -0000)
* ResXResourceReader.cs, ResXResourceWriter.cs: Made string conversions
culture-invariant.
* ResXResourceWriter.cs: Fixed AddResource (string, object) to emit
the type attribute when the object has a type converter.

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

mcs/class/Managed.Windows.Forms/System.Resources/ChangeLog
mcs/class/Managed.Windows.Forms/System.Resources/ResXResourceReader.cs
mcs/class/Managed.Windows.Forms/System.Resources/ResXResourceWriter.cs

index 3c48f2b917fba152a2f5ffc55fcdc8fcc9b2832c..7a81f96b425b8cdd354c86866bbb77cfa4f20993 100644 (file)
@@ -1,3 +1,10 @@
+2005-11-30  Robert Jordan  <robertj@gmx.net>
+
+       * ResXResourceReader.cs, ResXResourceWriter.cs: Made string conversions
+       culture-invariant.
+       * ResXResourceWriter.cs: Fixed AddResource (string, object) to emit
+       the type attribute when the object has a type converter.
+
 2005-10-04  Peter Bartok  <pbartok@novell.com>
 
        * ResXResourceReader.cs, ResXResourceWriter.cs: Added call
index 3e093fcd53fbd7552c2f1f20228ddefd7ce472f5..cd7a6f7983cffaa16d63b9aeb120ba64f96a756f 100644 (file)
@@ -204,7 +204,7 @@ namespace System.Resources
                                                        v = c.ConvertFrom (Convert.FromBase64String (val));
                                                } else if (tt != null) {
                                                        TypeConverter c = TypeDescriptor.GetConverter (tt);
-                                                       v = c.ConvertFromString (val);
+                                                       v = c.ConvertFromInvariantString (val);
                                                } else if (mt != null) {
                                                        byte [] data = Convert.FromBase64String (val);
                                                        BinaryFormatter f = new BinaryFormatter ();
index b8086c6e516b17a8247eff1f36a4f036300467b6..bfad541ad419d278305183fa401ea529c3f9f0fc 100644 (file)
@@ -165,9 +165,16 @@ namespace System.Resources
                }
 
                void WriteString (string name, string value)
+               {
+                        WriteString (name, value, null);
+               }
+
+               void WriteString (string name, string value, string typename)
                {
                        writer.WriteStartElement ("data");
                        writer.WriteAttributeString ("name", name);
+                        if (typename != null)
+                                writer.WriteAttributeString ("type", typename);
                        writer.WriteStartElement ("value");
                        writer.WriteString (value);
                        writer.WriteEndElement ();
@@ -206,10 +213,15 @@ namespace System.Resources
                        if (writer == null)
                                InitWriter ();
 
+                        if (value is string) {
+                                WriteString (name, (string) value);
+                                return;
+                        }
+
                        TypeConverter converter = TypeDescriptor.GetConverter (value);
                        if (converter != null && converter.CanConvertTo (typeof (string)) && converter.CanConvertFrom (typeof (string))) {
-                               string str = (string) converter.ConvertTo (value, typeof (string));
-                               WriteString (name, str);
+                               string str = (string) converter.ConvertToInvariantString (value);
+                               WriteString (name, str, value.GetType ().AssemblyQualifiedName);
                                return;
                        }