2 using System.Collections.Specialized;
6 namespace Hammock.Tests.Postmark.Converters
8 internal class NameValuePair
10 public string Name { get; set; }
11 public string Value { get; set; }
14 internal class NameValueCollectionConverter : JsonConverter
16 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
18 if (!(value is NameValueCollection))
23 var collection = (NameValueCollection)value;
24 var container = collection.AllKeys.Select(key => new NameValuePair
27 Value = collection[key]
30 var serialized = JsonConvert.SerializeObject(container);
32 writer.WriteRawValue(serialized);
35 public override object ReadJson(JsonReader reader, Type objectType, object originalValue, JsonSerializer serializer)
40 public override bool CanConvert(Type objectType)
42 var t = (IsNullableType(objectType))
43 ? Nullable.GetUnderlyingType(objectType)
46 return typeof(NameValueCollection).IsAssignableFrom(t);
49 public static bool IsNullable(Type type)
51 return type != null && (!type.IsValueType || IsNullableType(type));
54 public static bool IsNullableType(Type type)
61 return (type.IsGenericType &&
62 type.GetGenericTypeDefinition() == typeof(Nullable<>));