Exemplo n.º 1
0
        /// <summary>
        /// Deserializes a potentially endless sequence of objects from a stream source
        /// </summary>
        /// <param name="input">a streamed source of objects</param>
        /// <returns>a sequence of objects</returns>
        /// <remarks>
        /// character stream => token stream => object stream
        /// </remarks>
        public IEnumerable ReadMany(TextReader input)
        {
            ITextTokenizer <T> tokenizer = this.GetTokenizer();

            if (tokenizer == null)
            {
                throw new ArgumentNullException("tokenizer");
            }

            ITokenAnalyzer <T> analyzer = this.GetAnalyzer();

            if (analyzer == null)
            {
                throw new ArgumentNullException("analyzer");
            }

            try
            {
                // chars stream => token stream => object stream
                return(analyzer.Analyze(tokenizer.GetTokens(input)));
            }
            catch (DeserializationException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new DeserializationException(ex.Message, tokenizer.Index, tokenizer.Line, tokenizer.Column, ex);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Deserializes the data from the given input
        /// </summary>
        /// <param name="input">the input text</param>
        /// <param name="targetType">the expected type of the serialized data</param>
        public virtual object Read(string input, Type targetType)
        {
            ITextTokenizer <T> tokenizer = this.GetTokenizer();

            if (tokenizer == null)
            {
                throw new ArgumentNullException("tokenizer");
            }

            return(this.ReadSingle(tokenizer, tokenizer.GetTokens(input), targetType));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Deserializes the data from the given input
        /// </summary>
        /// <param name="input">the input reader</param>
        /// <param name="targetType">the expected type of the serialized data</param>
        public virtual object Read(TextReader input, Type targetType)
        {
            ITextTokenizer <T> tokenizer = this.GetTokenizer();

            if (tokenizer == null)
            {
                throw new InvalidOperationException("Tokenizer is invalid");
            }

            return(this.ReadSingle(tokenizer, tokenizer.GetTokens(input), targetType));
        }