Esempio n. 1
0
        protected internal override object Read(ContentReader input, object existingInstance)
        {
            T obj;

            if (existingInstance != null)
            {
                obj = (T)existingInstance;
            }
            else
            {
                obj = (_constructor == null ? (T)Activator.CreateInstance(typeof(T)) : (T)_constructor.Invoke(null));
            }

            if (_baseTypeReader != null)
            {
                _baseTypeReader.Read(input, obj);
            }

            // Box the type.
            var boxed = (object)obj;

            foreach (var reader in _readers)
            {
                reader(input, boxed);
            }

            // Unbox it... required for value types.
            obj = (T)boxed;

            return(obj);
        }
Esempio n. 2
0
        public T ReadObject <T>(ContentTypeReader typeReader)
        {
            T result = (T)typeReader.Read(this, default(T));

            RecordDisposable(result);
            return(result);
        }
Esempio n. 3
0
        protected internal override object Read(ContentReader input, object existingInstance)
        {
            T obj;

            if (existingInstance != null)
            {
                obj = (T)existingInstance;
            }
            else
            {
                obj = (T)constructor.Invoke(null);
            }

            if (baseTypeReader != null)
            {
                baseTypeReader.Read(input, obj);
            }

            foreach (PropertyInfo property in properties)
            {
                Read(obj, input, property);
            }
            foreach (FieldInfo field in fields)
            {
                Read(obj, input, field);
            }
            return(obj);
        }
Esempio n. 4
0
 public T ReadObject <T>(ContentTypeReader typeReader, T existingInstance)
 {
     if (!typeReader.TargetType.IsValueType)
     {
         return((T)ReadObject <object>());
     }
     return((T)typeReader.Read(this, existingInstance));
 }
Esempio n. 5
0
        public T ReadObject <T>(T existingInstance)
        {
            ContentTypeReader typeReader = typeReaderManager.GetTypeReader(typeof(T));

            if (typeReader != null)
            {
                return((T)typeReader.Read(this, existingInstance));
            }
            throw new ContentLoadException(String.Format("Could not read object type " + typeof(T).Name));
        }
Esempio n. 6
0
        public T ReadObject <T>(ContentTypeReader typeReader, T existingInstance)
        {
            if (!typeReader.TargetType.IsValueType)
            {
                return((T)ReadObject <object>());
            }
            T result = (T)typeReader.Read(this, existingInstance);

            RecordDisposable(result);
            return(result);
        }
Esempio n. 7
0
        public T ReadObject<T>(ContentTypeReader typeReader, T existingInstance)
        {
            if (!ReflectionHelpers.IsValueType(typeReader.TargetType))
                return ReadObject(existingInstance);

            var result = (T)typeReader.Read(this, existingInstance);

            RecordDisposable(result);

            return result;
        }
Esempio n. 8
0
        public T ReadObject <T>(ContentTypeReader typeReader, T existingInstance)
        {
#if WINRT
            if (!typeReader.TargetType.GetTypeInfo().IsValueType)
#else
            if (!typeReader.TargetType.IsValueType)
#endif
            { return((T)ReadObject <object>()); }

            var result = (T)typeReader.Read(this, existingInstance);

            RecordDisposable(result);

            return(result);
        }
Esempio n. 9
0
        private T InnerReadObject <T>(T existingInstance)
        {
            int typeReaderIndex = Read7BitEncodedInt();

            if (typeReaderIndex == 0)
            {
                return(existingInstance);
            }
            if (typeReaderIndex > typeReaders.Length)
            {
                throw new ContentLoadException(
                          "Incorrect type reader index found!"
                          );
            }
            ContentTypeReader typeReader = typeReaders[typeReaderIndex - 1];
            T result = (T)typeReader.Read(this, default(T));

            RecordDisposable(result);
            return(result);
        }
Esempio n. 10
0
        protected internal override object Read(
            ContentReader input,
            object existingInstance
            )
        {
            T obj;

            if (existingInstance != null)
            {
                obj = (T)existingInstance;
            }
            else
            {
                if (constructor == null)
                {
                    obj = (T)Activator.CreateInstance(typeof(T));
                }
                else
                {
                    obj = (T)constructor.Invoke(null);
                }
            }
            if (baseTypeReader != null)
            {
                baseTypeReader.Read(input, obj);
            }
            // Box the type.
            object boxed = (object)obj;

            foreach (PropertyInfo property in properties)
            {
                Read(boxed, input, property);
            }
            foreach (FieldInfo field in fields)
            {
                Read(boxed, input, field);
            }
            // Unbox it... required for value types.
            obj = (T)boxed;
            return(obj);
        }
Esempio n. 11
0
 public T ReadRawObject <T>(ContentTypeReader typeReader, T existingInstance)
 {
     return((T)typeReader.Read(this, existingInstance));
 }
Esempio n. 12
0
 public T ReadObject <T>(ContentTypeReader typeReader)
 {
     //typeReader.Initialize(new ContentTypeReaderManager(this));
     return((T)typeReader.Read(this, default(T)));
 }
Esempio n. 13
0
 public T ReadObject <T>(ContentTypeReader typeReader)
 {
     return((T)typeReader.Read(this, default(T)));
 }