Пример #1
0
        protected override void PopulateObjectMembers(
            object @object, ObjectData data, ObjectDataConvertSettings settings, ObjectDataConvertSession session)
        {
            var type = @object.GetType();

            if (type.IsArray)
            {
                var array = (Array)@object;
                int index = 0;
                foreach (var item in MembersToObjects(data, settings, session))
                {
                    array.SetValue(item, index++);
                }
            }
            else
            {
                var collectionType = CollectionTypeOf(@object);
                var addMethod      = collectionType.GetMethod("Add", new[] { ItemTypeOf(collectionType) });
                Debug.Assert(addMethod != null);
                foreach (var item in MembersToObjects(data, settings, session))
                {
                    addMethod.Invoke(@object, new[] { item });
                }
            }
        }
Пример #2
0
        protected override object CreateObject(ObjectData data,
                                               ObjectDataConvertSettings settings, ObjectDataConvertSession session)
        {
            var type = data.ObjectType;

            return(type.IsArray
                ? Array.CreateInstance(type.GetElementType(), data.Members.Count)
                : base.CreateObject(data, settings, session));
        }
Пример #3
0
        protected override IEnumerable <ObjectData.Member> ToDataMembers(
            object @object, ObjectDataConvertSettings settings, ObjectDataConvertSession session)
        {
            var dataMembers = new List <ObjectData.Member>();
            //var itemType = ItemTypeOf(@object);
            var collection = (IEnumerable)@object;

            foreach (var item in collection)
            {
                var data = Data.ToData(item, settings, session);
                dataMembers.Add(new ObjectData.Member("Item", data));
            }
            return(dataMembers);
        }
Пример #4
0
 private static IEnumerable <object> MembersToObjects(ObjectData data,
                                                      ObjectDataConvertSettings settings, ObjectDataConvertSession session)
 {
     return(data.Members.Select(m => Data.ToObject(m.Value, settings, session)));
 }