public override int ReadContentAsBase64( byte[] buffer, int index, int count ) {
switch ( state ) {
case State.Initial:
case State.EndOfFile:
case State.Closed:
return 0;
case State.ClearNsAttributes:
case State.PopNamespaceScope:
switch ( NodeType ) {
case XmlNodeType.Element:
throw CreateReadContentAsException( "ReadContentAsBase64" );
case XmlNodeType.EndElement:
return 0;
case XmlNodeType.Attribute:
case XmlNodeType.Text:
Debug.Assert( AttributeCount > 0 );
return reader.ReadContentAsBase64( buffer, index, count );
default:
Debug.Assert( false );
return 0;
}
case State.Interactive:
state = State.ReadContentAsBase64;
goto case State.ReadContentAsBase64;
case State.ReadContentAsBase64:
int read = reader.ReadContentAsBase64( buffer, index, count );
if ( read == 0 ) {
state = State.Interactive;
ProcessNamespaces();
}
return read;
case State.ReadContentAsBinHex:
case State.ReadElementContentAsBase64:
case State.ReadElementContentAsBinHex:
throw new InvalidOperationException( Res.GetString( Res.Xml_MixingBinaryContentMethods ) );
default:
Debug.Assert( false );
return 0;
}
}