#if !(SL5 || __IOS__ || XBOX || ANDROID || PCL) using System; using System.Collections.Generic; using ServiceStack.Web; namespace ServiceStack.Serialization { public class KeyValueDataContractDeserializer { public static KeyValueDataContractDeserializer Instance = new KeyValueDataContractDeserializer(); public object Parse(INameValueCollection nameValues, Type returnType) { return Parse(nameValues.ToDictionary(), returnType); } readonly Dictionary typeStringMapSerializerMap = new Dictionary(); public object Parse(IDictionary keyValuePairs, Type returnType) { StringMapTypeDeserializer stringMapTypeDeserializer; lock (typeStringMapSerializerMap) { if (!typeStringMapSerializerMap.TryGetValue(returnType, out stringMapTypeDeserializer)) { stringMapTypeDeserializer = new StringMapTypeDeserializer(returnType); typeStringMapSerializerMap.Add(returnType, stringMapTypeDeserializer); } } return stringMapTypeDeserializer.CreateFromMap(keyValuePairs); } public To Parse(IDictionary keyValuePairs) { return (To)Parse(keyValuePairs, typeof(To)); } } } #endif