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