Converts an Entity Framework EntityKey to and from JSON.
Inheritance: JsonConverter
示例#1
0
        public override object ReadJson(JsonReader reader, Type objectType, [Nullable(2)] object existingValue, JsonSerializer serializer)
        {
            EntityKeyMemberConverter.EnsureReflectionObject(objectType);

            object obj = EntityKeyMemberConverter._reflectionObject.Creator(new object[0]);

            EntityKeyMemberConverter.ReadAndAssertProperty(reader, "Key");
            reader.ReadAndAssert();
            ReflectionObject reflectionObject = EntityKeyMemberConverter._reflectionObject;
            object           target           = obj;
            string           member           = "Key";
            object           value            = reader.Value;

            reflectionObject.SetValue(target, member, (value != null) ? value.ToString() : null);
            EntityKeyMemberConverter.ReadAndAssertProperty(reader, "Type");
            reader.ReadAndAssert();
            object value2 = reader.Value;
            Type   type   = Type.GetType((value2 != null) ? value2.ToString() : null);

            EntityKeyMemberConverter.ReadAndAssertProperty(reader, "Value");
            reader.ReadAndAssert();
            EntityKeyMemberConverter._reflectionObject.SetValue(obj, "Value", serializer.Deserialize(reader, type));
            reader.ReadAndAssert();
            return(obj);
        }
 private static void ReadAndAssertProperty(JsonReader reader, string propertyName)
 {
     EntityKeyMemberConverter.ReadAndAssert(reader);
     if (reader.TokenType != JsonToken.PropertyName || !string.Equals(reader.Value.ToString(), propertyName, StringComparison.OrdinalIgnoreCase))
     {
         throw new JsonSerializationException("Expected JSON property '{0}'.".FormatWith(CultureInfo.InvariantCulture, propertyName));
     }
 }
示例#3
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            string str;
            Type   type;
            string fullName;

            EntityKeyMemberConverter.EnsureReflectionObject(value.GetType());
            DefaultContractResolver contractResolver = serializer.ContractResolver as DefaultContractResolver;
            string str1 = (string)EntityKeyMemberConverter._reflectionObject.GetValue(value, "Key");
            object obj  = EntityKeyMemberConverter._reflectionObject.GetValue(value, "Value");

            if (obj != null)
            {
                type = obj.GetType();
            }
            else
            {
                type = null;
            }
            Type type1 = type;

            writer.WriteStartObject();
            writer.WritePropertyName((contractResolver != null ? contractResolver.GetResolvedPropertyName("Key") : "Key"));
            writer.WriteValue(str1);
            writer.WritePropertyName((contractResolver != null ? contractResolver.GetResolvedPropertyName("Type") : "Type"));
            JsonWriter jsonWriter = writer;

            if (type1 != null)
            {
                fullName = type1.FullName;
            }
            else
            {
                fullName = null;
            }
            jsonWriter.WriteValue(fullName);
            writer.WritePropertyName((contractResolver != null ? contractResolver.GetResolvedPropertyName("Value") : "Value"));
            if (type1 == null)
            {
                writer.WriteNull();
            }
            else if (!JsonSerializerInternalWriter.TryConvertToString(obj, type1, out str))
            {
                writer.WriteValue(obj);
            }
            else
            {
                writer.WriteValue(str);
            }
            writer.WriteEndObject();
        }
示例#4
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            EntityKeyMemberConverter.EnsureReflectionObject(objectType);
            object creator = EntityKeyMemberConverter._reflectionObject.Creator(new object[0]);

            EntityKeyMemberConverter.ReadAndAssertProperty(reader, "Key");
            reader.ReadAndAssert();
            EntityKeyMemberConverter._reflectionObject.SetValue(creator, "Key", reader.Value.ToString());
            EntityKeyMemberConverter.ReadAndAssertProperty(reader, "Type");
            reader.ReadAndAssert();
            Type type = Type.GetType(reader.Value.ToString());

            EntityKeyMemberConverter.ReadAndAssertProperty(reader, "Value");
            reader.ReadAndAssert();
            EntityKeyMemberConverter._reflectionObject.SetValue(creator, "Value", serializer.Deserialize(reader, type));
            reader.ReadAndAssert();
            return(creator);
        }
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            IEntityKeyMember entityKeyMember = DynamicWrapper.CreateWrapper <IEntityKeyMember>(Activator.CreateInstance(objectType));

            EntityKeyMemberConverter.ReadAndAssertProperty(reader, "Key");
            EntityKeyMemberConverter.ReadAndAssert(reader);
            entityKeyMember.Key = reader.Value.ToString();
            EntityKeyMemberConverter.ReadAndAssertProperty(reader, "Type");
            EntityKeyMemberConverter.ReadAndAssert(reader);
            string typeName = reader.Value.ToString();
            Type   type     = Type.GetType(typeName);

            EntityKeyMemberConverter.ReadAndAssertProperty(reader, "Value");
            EntityKeyMemberConverter.ReadAndAssert(reader);
            entityKeyMember.Value = serializer.Deserialize(reader, type);
            EntityKeyMemberConverter.ReadAndAssert(reader);
            return(DynamicWrapper.GetUnderlyingObject(entityKeyMember));
        }
示例#6
0
        // Token: 0x060014A5 RID: 5285 RVA: 0x0006DB84 File Offset: 0x0006BD84
        public override void WriteJson(JsonWriter writer, [Nullable(2)] object value, JsonSerializer serializer)
        {
            if (value == null)
            {
                writer.WriteNull();
                return;
            }
            EntityKeyMemberConverter.EnsureReflectionObject(value.GetType());
            DefaultContractResolver defaultContractResolver = serializer.ContractResolver as DefaultContractResolver;
            string value2 = (string)EntityKeyMemberConverter._reflectionObject.GetValue(value, "Key");
            object value3 = EntityKeyMemberConverter._reflectionObject.GetValue(value, "Value");
            Type   type   = (value3 != null) ? value3.GetType() : null;

            writer.WriteStartObject();
            writer.WritePropertyName((defaultContractResolver != null) ? defaultContractResolver.GetResolvedPropertyName("Key") : "Key");
            writer.WriteValue(value2);
            writer.WritePropertyName((defaultContractResolver != null) ? defaultContractResolver.GetResolvedPropertyName("Type") : "Type");
            writer.WriteValue((type != null) ? type.FullName : null);
            writer.WritePropertyName((defaultContractResolver != null) ? defaultContractResolver.GetResolvedPropertyName("Value") : "Value");
            if (type != null)
            {
                string value4;
                if (JsonSerializerInternalWriter.TryConvertToString(value3, type, out value4))
                {
                    writer.WriteValue(value4);
                }
                else
                {
                    writer.WriteValue(value3);
                }
            }
            else
            {
                writer.WriteNull();
            }
            writer.WriteEndObject();
        }