Ejemplo 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()));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
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)));
        }
Ejemplo n.º 5
0
 public ValueModel Disassemble(object value, Type type, DisassemblyContext context)
 {
     return(GetAssembler(value.GetType()).Disassemble(value, context));
 }
Ejemplo n.º 6
0
 public ValueModel Disassemble(object obj, Type type, DisassemblyContext context)
 {
     return(_populator.Extract(obj, context));
 }
Ejemplo n.º 7
0
 public ValueModel Disassemble(object value, Type expectedType, DisassemblyContext context)
 => (value as IAssemblable).Disassemble(context);
Ejemplo n.º 8
0
 public ValueModel Disassemble(object value, Type type, DisassemblyContext context)
 {
     return(new PrimitiveModel(value));
 }