public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { MnForm form = new MnForm(); JObject jsonObject = JObject.Load(reader); var properties = jsonObject.Properties().ToList(); foreach (var property in properties) { if (property.Name.Equals("Type")) { continue; } var proInfo = form.GetType().GetProperty(property.Name); if (proInfo.PropertyType == form.Elements.GetType()) { var jbc = new MnElementConverter(); var props = property.Value.ToObject <List <object> >(); List <IMnBaseElement> elements = props.Select(prop => jbc.GetJbElement(prop as JObject)).ToList(); proInfo.SetValue(form, elements); } else if (proInfo.PropertyType == form.AccessRole.GetType()) { var accessRoles = property.Value.ToObject <Dictionary <string, AccessMode> >(); proInfo.SetValue(form, accessRoles); } else { //if (typeof(System.Collections.IEnumerable).IsAssignableFrom(proInfo.PropertyType)) // continue; if (proInfo.PropertyType != typeof(BindingConfig)) { proInfo.SetValue(form, Convert.ChangeType(property.Value, proInfo.PropertyType)); } } } return(form); }
public static MnFormViewModel FromJbForm(MnForm jbform) { return(Helper.AutoMapper.Map <MnForm, MnFormViewModel>(jbform)); }