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) { 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 override void Disassemble(ObjectField field, object obj, Type expectedType, DisassemblyContext context) { field.Model = _assembler.Disassemble(obj, expectedType, context); }