Inheritance: ViewDefinition
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var jObject = JObject.Load(reader);

            object target;
            if (jObject.Property("module") != null)
            {
                target = new ModuleViewDefinition();
            }
            else if (jObject.Property("template") != null)
            {
                var template = _templateRespository.GetTemplateAsync(jObject.Property("template").Value.Value<string>()).Result;
                var type = _typeProvider.GetModelTypeFromTemplateAsync(template).Result;
                target = Activator.CreateInstance(typeof(PageViewDefinition<>).MakeGenericType(type), template);
                
            }
            else
                return serializer.Deserialize(jObject.CreateReader(), objectType);

            var jObjectReader = jObject.CreateReader();
            jObjectReader.Culture = reader.Culture;
            jObjectReader.DateParseHandling = reader.DateParseHandling;
            jObjectReader.DateTimeZoneHandling = reader.DateTimeZoneHandling;
            jObjectReader.FloatParseHandling = reader.FloatParseHandling;

            serializer.Populate(jObjectReader, target);

            return target;
        }
Ejemplo n.º 2
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var jObject = JObject.Load(reader);

            object target;

            if (jObject.Property("module") != null)
            {
                target = new ModuleViewDefinition();
            }
            else if (jObject.Property("template") != null)
            {
                var template = _templateRespository.GetTemplateAsync(jObject.Property("template").Value.Value <string>()).Result;
                var type     = _typeProvider.GetModelTypeFromTemplateAsync(template).Result;
                target = Activator.CreateInstance(typeof(PageViewDefinition <>).MakeGenericType(type), template);
            }
            else
            {
                return(serializer.Deserialize(jObject.CreateReader(), objectType));
            }

            var jObjectReader = jObject.CreateReader();

            jObjectReader.Culture              = reader.Culture;
            jObjectReader.DateParseHandling    = reader.DateParseHandling;
            jObjectReader.DateTimeZoneHandling = reader.DateTimeZoneHandling;
            jObjectReader.FloatParseHandling   = reader.FloatParseHandling;

            serializer.Populate(jObjectReader, target);

            return(target);
        }