public override object GetValue(int i)
        {
            if (m_dataEnumerator == null)
            {
                throw new ObjectDisposedException(GetType().Name);
            }

            var value = m_selector(m_dataEnumerator.Current, m_schema[i].FieldName);

            if (value == null)
            {
                return(DBNull.Value);
            }

            var strValue = value as string;

            if (strValue != null)
            {
                if (strValue.Length > m_schema[i].Size && m_schema[i].Size > 0)
                {
                    strValue = strValue.Substring(0, m_schema[i].Size);
                }
                if (m_schema[i].DataType == DbType.String)
                {
                    return(strValue);
                }
                return(SchemaFieldDef.StringToTypedValue(strValue, m_schema[i].DataType) ?? DBNull.Value);
            }

            return(value);
        }