private void WriteText(object o, TextAccessor text)
{
if (text.Mapping is PrimitiveMapping)
{
PrimitiveMapping mapping = (PrimitiveMapping)text.Mapping;
string stringValue;
if (text.Mapping is EnumMapping)
{
stringValue = WriteEnumMethod((EnumMapping)mapping, o);
}
else
{
if (!WritePrimitiveValue(mapping.TypeDesc, o, false, out stringValue))
{
// #10593: Add More Tests for Serialization Code
Debug.Assert(o is byte[]);
}
}
if (o is byte[])
{
WriteValue((byte[])o);
}
else
{
WriteValue(stringValue);
}
}
else if (text.Mapping is SpecialMapping)
{
SpecialMapping mapping = (SpecialMapping)text.Mapping;
switch (mapping.TypeDesc.Kind)
{
case TypeKind.Node:
((XmlNode)o).WriteTo(Writer);
break;
default:
throw new InvalidOperationException(SR.Format(SR.XmlInternalError));
}
}
}