private void WritePrimitive(TypeMapping mapping, string source)
{
if (mapping is EnumMapping)
{
string enumMethodName = ReferenceMapping(mapping);
if (enumMethodName == null) throw new InvalidOperationException(SR.Format(SR.XmlMissingMethodEnum, mapping.TypeDesc.Name));
if (mapping.IsSoap)
{
// SOAP methods are not strongly-typed (the return object), so we need to add a cast
Writer.Write("(");
Writer.Write(mapping.TypeDesc.CSharpName);
Writer.Write(")");
}
Writer.Write(enumMethodName);
Writer.Write("(");
if (!mapping.IsSoap) Writer.Write(source);
Writer.Write(")");
}
else if (mapping.TypeDesc == StringTypeDesc)
{
Writer.Write(source);
}
else if (mapping.TypeDesc.FormatterName == "String")
{
if (mapping.TypeDesc.CollapseWhitespace)
{
Writer.Write("CollapseWhitespace(");
Writer.Write(source);
Writer.Write(")");
}
else
{
Writer.Write(source);
}
}
else
{
if (!mapping.TypeDesc.HasCustomFormatter)
{
Writer.Write(typeof(XmlConvert).FullName);
Writer.Write(".");
}
Writer.Write("To");
Writer.Write(mapping.TypeDesc.FormatterName);
Writer.Write("(");
Writer.Write(source);
Writer.Write(")");
}
}