public RootModel Disassemble(object obj, bool isExplicit) { Type expectedType = isExplicit ? typeof(object) : obj.GetType(); DisassemblyContext context = new DisassemblyContext(); ValueModel value = _rootAssembler.Disassemble(obj, expectedType, context); context.ReturnGuidRequests(); return(new RootModel(value, new ArrayModel())); }
public ValueModel Disassemble(object obj, Type expectedType, DisassemblyContext context) { if (obj == null) { return(new NullModel()); } var model = GetAssembler(obj.GetType()).Disassemble(obj, expectedType, context); if (obj.GetType() != expectedType) { model.MakeExplicit(obj.GetType()); } return(model); }
public ObjectModel Extract(object obj, DisassemblyContext context) { Type objectType = obj.GetType(); var properties = new List <ObjectField>(); IEnumerable <IAssignableMemberInfo> fields = GetModelFields(objectType); foreach (IAssignableMemberInfo info in fields) { try { ObjectField objectField = new ObjectField(); objectField.Name = info.Name; object memberValue = info.GetValue(obj); if (memberValue != null) { GetPropertyAssembler(info.AttributeType).Disassemble(objectField, memberValue, info.ValueType, context); if (memberValue.GetType() != info.ValueType) { objectField.Model.MakeExplicit(memberValue.GetType()); } } else { objectField.Model = new NullModel(); } properties.Add(objectField); } catch (Exception e) { Debug.LogException(e); } } return(context.MakeReferencable(obj, new ObjectModel(properties.ToArray())) as ObjectModel); }
public ValueModel Disassemble(object obj, Type expectedType, DisassemblyContext context) { List <ValueModel> models = new List <ValueModel>(); IEnumerable enumerable = obj as IEnumerable; if (obj != null) { foreach (object element in enumerable) { ValueModel model = _elementAssembler.Disassemble(element, element.GetType(), context); if (element.GetType() != GetElementType(obj.GetType())) { model.MakeExplicit(element.GetType()); } models.Add(model); } } var modelsArray = models.ToArray(); return(context.MakeReferencable(modelsArray, new ArrayModel(modelsArray))); }
public ValueModel Disassemble(object value, Type type, DisassemblyContext context) { return(GetAssembler(value.GetType()).Disassemble(value, context)); }
public ValueModel Disassemble(object obj, Type type, DisassemblyContext context) { return(_populator.Extract(obj, context)); }
public ValueModel Disassemble(object value, Type expectedType, DisassemblyContext context) => (value as IAssemblable).Disassemble(context);
public ValueModel Disassemble(object value, Type type, DisassemblyContext context) { return(new PrimitiveModel(value)); }