Beispiel #1
0
        /// <summary>
        ///     <see cref="JsonConverter{T}.WriteJson(JsonWriter, object, JsonSerializer)" />
        /// </summary>
        public override void WriteJson(JsonWriter writer, IGenericPersistedDTO value, JsonSerializer serializer)
        {
            // Récupération de la configuration
            var cfg = GenericJsonTypeIndex.GetConfigurationByType(value.GetType());
            var kt  = cfg.KeyType;
            var key = cfg.UnsafeGetNameByType(value.GetType());

            // Conversion
            var job = JObject.FromObject(value);

            job.Add(PersistedJsonContractResolver.TYPE_PROPERTY_NAME, key);

            // Ecriture
            job.WriteTo(writer, CONVERTERS);
        }
Beispiel #2
0
        /// <summary>
        ///     <see cref="JsonConverter{T}.ReadJson(JsonReader, Type, T, bool, JsonSerializer)" />
        /// </summary>
        public override IGenericPersistedDTO ReadJson(JsonReader reader, Type objectType, IGenericPersistedDTO existingValue, bool hasExistingValue, JsonSerializer serializer)
        {
            // Récupération du type
            var obj = JObject.Load(reader);
            var val = obj[PersistedJsonContractResolver.TYPE_PROPERTY_NAME].Value <string>();

            // Récupération de la configuration
            var cfg      = GenericJsonTypeIndex.GetConfigurationByType(objectType);
            var key      = Enum.Parse(cfg.KeyType, val);
            var instance = cfg.UnsafeGetInstance(key);

            // Renvoi
            serializer.Populate(obj.CreateReader(), instance);
            return(instance);
        }