public XmlReader CreateReader()
{
if (IsNull)
{
throw new SqlNullValueException();
}
SqlXmlStreamWrapper stream = new SqlXmlStreamWrapper(m_stream);
// if it is the first time we create reader and stream does not support CanSeek, no need to reset position
if ((!firstCreateReader || stream.CanSeek) && stream.Position != 0)
{
stream.Seek(0, SeekOrigin.Begin);
}
// NOTE: Maintaining createSqlReaderMethodInfo private field member to preserve the serialization of the class
if (createSqlReaderMethodInfo == null)
{
createSqlReaderMethodInfo = CreateSqlReaderMethodInfo;
}
Debug.Assert(createSqlReaderMethodInfo != null, "MethodInfo reference for XmlReader.CreateSqlReader should not be null.");
XmlReader r = CreateSqlXmlReader(stream);
firstCreateReader = false;
return(r);
}