/// <summary>
        /// 
        /// </summary>
        /// <remarks>
        /// This function is called by the infrastructure when starting to read
        /// the file by the FileDataReader
        /// </remarks>
        protected override void OpenForRead()
        {
            if (inputReader == null)
            {
                base.OpenForRead();

                // Open text reader
                // Wrap underlying stream, so it doesn't get disposed automatically
                if (base.Encoding == null)
                {
                    inputReader = new StreamReader(new DetachedStream(base.BaseStream));
                }
                else
                {
                    inputReader = new StreamReader(new DetachedStream(base.BaseStream), base.Encoding);
                }

                this.ownsInputReader = true;
            }

            this.bufferedReader = new BufferedTextReader(inputReader);
        }
 private void InitializeMembers()
 {
     this.textBuffer = new BufferedTextReader(File.TextReader);
 }
        public override void Close()
        {
            if (ownsInputReader && inputReader != null)
            {
                inputReader.Close();
                inputReader.Dispose();
            }

            inputReader = null;
            ownsInputReader = false;

            bufferedReader = null;

            if (ownsOutputWriter && outputWriter != null)
            {
                outputWriter.Flush();
                outputWriter.Close();
                outputWriter.Dispose();
            }

            outputWriter = null;
            ownsOutputWriter = false;

            base.Close();
        }