コード例 #1
0
        public override object ReadJson(JsonReader reader,
                                        Type objectType,
                                        object existingValue,
                                        JsonSerializer serializer)
        {
            var typeArgs = objectType.GenericTypeArguments;

            if (reader.TokenType == JsonToken.Null)
            {
                var concreteType = OptionType.MakeGenericType(typeArgs);
                return(concreteType.GetField(Empty).GetValue(null));
            }

            var paramType = typeArgs[0];
            var value     = serializer.Deserialize(reader, paramType);

            return(Some.MakeGenericMethod(paramType).Invoke(null, new [] { value }));
        }