Пример #1
0
            public void ReadObject(Amf3Reader reader, object obj)
            {
                var amfObj = (Amf3Object)obj;

                reader.ReadObjectHeader(amfObj.ClassDef);

                // read class properties
                for (int i = 0; i < amfObj.Values.Length; i++)
                {
                    reader.Read(ref amfObj.Values[i]);
                }
            }
Пример #2
0
        public void ReadObject(Amf3Reader reader, object obj)
        {
            var expando = (ExpandoObject)obj;

            reader.ReadObjectHeader();

            // read class properties
            while (!reader.Done)
            {
                string name  = reader.Name;
                object value = reader.ReadAsObject();
                expando[name] = value;
            }
        }
        public void ReadObject(Amf3Reader reader, object obj)
        {
            // see if object implements IAmf3Readable, if so, use it instead of reflection
            var serializable = obj as IAmf3Readable;

            if (serializable != null)
            {
                // read using custom method (fast)
                serializable.Serialize(reader);
                return;
            }

            // read using reflection (slow)
            // begin read
            reader.ReadObjectHeader(mClassDef);

            // read all fields using reflection
            foreach (var field in mFieldList)
            {
                // read value
                Variant value = reader.ReadAsVariant();
                if (value.IsDefined)
                {
                    field.SetValue(obj, value.AsType(field.FieldType));
                }
            }

            // read all properties using reflection
            foreach (var property in mPropertyList)
            {
                // read value
                Variant value = reader.ReadAsVariant();
                if (value.IsDefined)
                {
                    property.SetValue(obj, value.AsType(property.PropertyType), null);
                }
            }
        }