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)); } }
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)); }