private string CovertPrimitiveToString(object o, TypeDesc typeDesc)
{
string stringValue;
switch (typeDesc.FormatterName)
{
case "Boolean":
stringValue = XmlConvert.ToString((bool)o);
break;
case "Int32":
stringValue = XmlConvert.ToString((int)o);
break;
case "Int16":
stringValue = XmlConvert.ToString((short)o);
break;
case "Int64":
stringValue = XmlConvert.ToString((long)o);
break;
case "Single":
stringValue = XmlConvert.ToString((float)o);
break;
case "Double":
stringValue = XmlConvert.ToString((double)o);
break;
case "Decimal":
stringValue = XmlConvert.ToString((decimal)o);
break;
case "Byte":
stringValue = XmlConvert.ToString((byte)o);
break;
case "SByte":
stringValue = XmlConvert.ToString((sbyte)o);
break;
case "UInt16":
stringValue = XmlConvert.ToString((ushort)o);
break;
case "UInt32":
stringValue = XmlConvert.ToString((uint)o);
break;
case "UInt64":
stringValue = XmlConvert.ToString((ulong)o);
break;
// Types without direct mapping (ambiguous)
case "Guid":
stringValue = XmlConvert.ToString((Guid)o);
break;
case "Char":
stringValue = XmlConvert.ToString((char)o);
break;
case "TimeSpan":
stringValue = XmlConvert.ToString((TimeSpan)o);
break;
default:
stringValue = o.ToString();
break;
}
return stringValue;
}