protected void WriteTypedPrimitive(string name, string ns, object o, bool xsiType)
{
string value;
TypeData td = TypeTranslator.GetTypeData(o.GetType());
name = XmlCustomFormatter.FromXmlName(name);
Writer.WriteStartElement(name, ns);
if (o is XmlQualifiedName)
{
value = FromXmlQualifiedName((XmlQualifiedName)o);
}
else
{
value = XmlCustomFormatter.ToXmlString(td, o);
}
if (xsiType)
{
if (td.SchemaType != SchemaTypes.Primitive)
{
throw new InvalidOperationException(string.Format(unexpectedTypeError, o.GetType().FullName));
}
WriteXsiType(td.XmlType, XmlSchema.Namespace);
}
WriteValue(value);
Writer.WriteEndElement();
}