public override void WriteJson(JsonWriter writer, object maybe, JsonSerializer serializer) { var valueType = maybe.GetType().GetGenericArguments()[0]; var valueOrNull = MaybeNonGenericFactory.TryGetValue(maybe, valueType); serializer.Serialize(writer, valueOrNull); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var valueType = objectType.GetGenericArguments()[0]; if (reader.TokenType == JsonToken.Undefined || reader.TokenType == JsonToken.Null) { return(MaybeNonGenericFactory.None(valueType)); } var deserialized = serializer.Deserialize(reader, valueType); return(MaybeNonGenericFactory.Some(valueType, deserialized)); }