예제 #1
0
        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);
        }
예제 #2
0
 public static MnFormViewModel FromJbForm(MnForm jbform)
 {
     return(Helper.AutoMapper.Map <MnForm, MnFormViewModel>(jbform));
 }