private ReferenceObject BuildReferenceObject(object item) { ReferenceObject current = new ReferenceObject(); RegisterObject(current, item); //let readers of the serialize data know that this should be treated as a list if (item is IEnumerable) { current.IsEnumerable = true; } Type currentType = item.GetType(); while (currentType != null) { FieldInfo[] fields = currentType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly); foreach (FieldInfo fieldInfo in fields) { if (IsNonSerialized(fieldInfo)) { continue; } Field field = new Field(); current.Fields.Add(field); field.Name = fieldInfo.Name; object fieldValue = fieldInfo.GetValue(item); field.Value = GetObject(fieldValue); } currentType = currentType.BaseType; } return(current); }
public void DeserializeSimpleObject() { ReferenceObject robj = new ReferenceObject(); robj.ID = 0; robj.Type = typeof (SomeClass); Field nameField = new Field(); Field ageField = new Field(); Field parentField = new Field(); nameField.Name = "name"; ageField.Name = "age"; parentField.Name = "parent"; nameField.Value = NullObject.Default; parentField.Value = NullObject.Default; ageField.Value = GetIntegerValueObject(55); robj.Fields.Add(nameField); robj.Fields.Add(ageField); robj.Fields.Add(parentField); SomeClass res = (SomeClass)robj.GetValue(); Assert.AreEqual(res.Name,null); Assert.AreEqual(res.Parent,null); Assert.AreEqual(res.Age, 55); }
private ReferenceObject BuildReferenceObject(object item) { ReferenceObject current = new ReferenceObject(); RegisterObject(current, item); //let readers of the serialize data know that this should be treated as a list if (item is IEnumerable) { current.IsEnumerable = true; } FieldInfo[] fields = item.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (FieldInfo field in fields) { if (IsNonSerialized(field)) { continue; } Field property = new Field(); current.Fields.Add(property); property.Name = field.Name; object fieldValue = field.GetValue(item); property.Value = GetObject(fieldValue); } return(current); }
private ReferenceObject BuildReferenceObject(object item) { ReferenceObject current = new ReferenceObject(); RegisterObject(current, item); //let readers of the serialize data know that this should be treated as a list if (item is IEnumerable) current.IsEnumerable = true; Type currentType = item.GetType(); while (currentType != null) { FieldInfo[] fields = currentType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly); foreach (FieldInfo fieldInfo in fields) { if (IsNonSerialized(fieldInfo)) continue; Field field = new Field(); current.Fields.Add(field); field.Name = fieldInfo.Name; object fieldValue = fieldInfo.GetValue(item); field.Value = GetObject(fieldValue); } currentType = currentType.BaseType; } return current; }
private ReferenceObject BuildReferenceObject(object item) { ReferenceObject current = new ReferenceObject(); RegisterObject(current, item); //let readers of the serialize data know that this should be treated as a list if (item is IEnumerable) current.IsEnumerable = true; FieldInfo[] fields = item.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (FieldInfo field in fields) { if (IsNonSerialized(field)) continue; Field property = new Field(); current.Fields.Add(property); property.Name = field.Name; object fieldValue = field.GetValue(item); property.Value = GetObject(fieldValue); } return current; }