public override long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
{
if (i >= FieldCount)
Throw(new IndexOutOfRangeException());
string valAsString = GetString(i);
if (buffer == null) return valAsString.Length;
if (bufferoffset >= buffer.Length || bufferoffset < 0)
Throw(new IndexOutOfRangeException("Buffer index must be a valid index in buffer"));
if (buffer.Length < (bufferoffset + length))
Throw(new ArgumentException("Buffer is not large enough to hold the requested data"));
if (fieldoffset < 0 || fieldoffset >= valAsString.Length)
Throw(new IndexOutOfRangeException("Field offset must be a valid index in the field"));
if (valAsString.Length < length)
length = valAsString.Length;
valAsString.CopyTo((int)fieldoffset, buffer, bufferoffset, length);
return length;
}