private void WriteValue(object value)
{
if (value == null)
{
Writer.Write("null");
}
else
{
Type type = value.GetType();
if (type == typeof(String))
{
string s = (string)value;
WriteQuotedCSharpString(s);
}
else if (type == typeof(Char))
{
Writer.Write('\'');
char ch = (char)value;
if (ch == '\'')
Writer.Write("\'");
else
Writer.Write(ch);
Writer.Write('\'');
}
else if (type == typeof(Int32))
Writer.Write(((Int32)value).ToString(null, NumberFormatInfo.InvariantInfo));
else if (type == typeof(Double))
Writer.Write(((Double)value).ToString("R", NumberFormatInfo.InvariantInfo));
else if (type == typeof(Boolean))
Writer.Write((bool)value ? "true" : "false");
else if ((type == typeof(Int16)) || (type == typeof(Int64)) || (type == typeof(UInt16)) || (type == typeof(UInt32)) || (type == typeof(UInt64)) || (type == typeof(Byte)) || (type == typeof(SByte)))
{
Writer.Write("(");
Writer.Write(type.FullName);
Writer.Write(")");
Writer.Write("(");
Writer.Write(Convert.ToString(value, NumberFormatInfo.InvariantInfo));
Writer.Write(")");
}
else if (type == typeof(Single))
{
Writer.Write(((Single)value).ToString("R", NumberFormatInfo.InvariantInfo));
Writer.Write("f");
}
else if (type == typeof(Decimal))
{
Writer.Write(((Decimal)value).ToString(null, NumberFormatInfo.InvariantInfo));
Writer.Write("m");
}
else if (type == typeof(DateTime))
{
Writer.Write(" new ");
Writer.Write(type.FullName);
Writer.Write("(");
Writer.Write(((DateTime)value).Ticks.ToString(CultureInfo.InvariantCulture));
Writer.Write(")");
}
else
{
if (type.GetTypeInfo().IsEnum)
{
Writer.Write(((int)value).ToString(null, NumberFormatInfo.InvariantInfo));
}
else
{
throw new InvalidOperationException(SR.Format(SR.XmlUnsupportedDefaultType, type.FullName));
}
}
}
}