Author: kostat
Date: 2007-06-21 14:16:26 -0400 (Thu, 21 Jun 2007)
New Revision: 80504

Modified:
   
trunk/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs
Log:
implemented JavaScriptConverter..Deserialize functionality

Modified: 
trunk/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs
===================================================================
--- 
trunk/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs
       2007-06-21 18:16:12 UTC (rev 80503)
+++ 
trunk/mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JavaScriptSerializer.cs
       2007-06-21 18:16:26 UTC (rev 80504)
@@ -80,8 +80,16 @@
                                return null;
 
                        if (obj is IDictionary<string, object>) {
-                               if (type == null && !(obj is Dictionary<string, 
object>))
+                               if (type == null)
                                        obj = Evaluate ((IDictionary<string, 
object>) obj);
+                               else {
+                                       JavaScriptConverter converter = 
GetConverter (type);
+                                       if (converter != null)
+                                               return converter.Deserialize (
+                                                       Evaluate 
((IDictionary<string, object>) obj),
+                                                       type, this);
+                               }
+
                                return Deserialize ((IDictionary<string, 
object>) obj, type);
                        }
                        if (obj is IEnumerable<object>)
@@ -127,7 +135,9 @@
                        return list;
                }
 
-               static object Evaluate (IDictionary<string, object> dict) {
+               static IDictionary<string, object> Evaluate 
(IDictionary<string, object> dict) {
+                       if (dict is Dictionary<string, object>)
+                               return dict;
                        Dictionary<string, object> d = new Dictionary<string, 
object> (StringComparer.Ordinal);
                        foreach (KeyValuePair<string, object> entry in dict)
                                d.Add (entry.Key, Evaluate(entry.Value));

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to