internal static void WriteValue()

in src/Elastic.Apm/Libraries/Newtonsoft.Json/JsonWriter.cs [1252:1442]


		internal static void WriteValue(JsonWriter writer, PrimitiveTypeCode typeCode, object value)
		{
			while (true)
			{
				switch (typeCode)
				{
					case PrimitiveTypeCode.Char:
						writer.WriteValue((char)value);
						return;

					case PrimitiveTypeCode.CharNullable:
						writer.WriteValue(value == null ? (char?)null : (char)value);
						return;

					case PrimitiveTypeCode.Boolean:
						writer.WriteValue((bool)value);
						return;

					case PrimitiveTypeCode.BooleanNullable:
						writer.WriteValue(value == null ? (bool?)null : (bool)value);
						return;

					case PrimitiveTypeCode.SByte:
						writer.WriteValue((sbyte)value);
						return;

					case PrimitiveTypeCode.SByteNullable:
						writer.WriteValue(value == null ? (sbyte?)null : (sbyte)value);
						return;

					case PrimitiveTypeCode.Int16:
						writer.WriteValue((short)value);
						return;

					case PrimitiveTypeCode.Int16Nullable:
						writer.WriteValue(value == null ? (short?)null : (short)value);
						return;

					case PrimitiveTypeCode.UInt16:
						writer.WriteValue((ushort)value);
						return;

					case PrimitiveTypeCode.UInt16Nullable:
						writer.WriteValue(value == null ? (ushort?)null : (ushort)value);
						return;

					case PrimitiveTypeCode.Int32:
						writer.WriteValue((int)value);
						return;

					case PrimitiveTypeCode.Int32Nullable:
						writer.WriteValue(value == null ? (int?)null : (int)value);
						return;

					case PrimitiveTypeCode.Byte:
						writer.WriteValue((byte)value);
						return;

					case PrimitiveTypeCode.ByteNullable:
						writer.WriteValue(value == null ? (byte?)null : (byte)value);
						return;

					case PrimitiveTypeCode.UInt32:
						writer.WriteValue((uint)value);
						return;

					case PrimitiveTypeCode.UInt32Nullable:
						writer.WriteValue(value == null ? (uint?)null : (uint)value);
						return;

					case PrimitiveTypeCode.Int64:
						writer.WriteValue((long)value);
						return;

					case PrimitiveTypeCode.Int64Nullable:
						writer.WriteValue(value == null ? (long?)null : (long)value);
						return;

					case PrimitiveTypeCode.UInt64:
						writer.WriteValue((ulong)value);
						return;

					case PrimitiveTypeCode.UInt64Nullable:
						writer.WriteValue(value == null ? (ulong?)null : (ulong)value);
						return;

					case PrimitiveTypeCode.Single:
						writer.WriteValue((float)value);
						return;

					case PrimitiveTypeCode.SingleNullable:
						writer.WriteValue(value == null ? (float?)null : (float)value);
						return;

					case PrimitiveTypeCode.Double:
						writer.WriteValue((double)value);
						return;

					case PrimitiveTypeCode.DoubleNullable:
						writer.WriteValue(value == null ? (double?)null : (double)value);
						return;

					case PrimitiveTypeCode.DateTime:
						writer.WriteValue((DateTime)value);
						return;

					case PrimitiveTypeCode.DateTimeNullable:
						writer.WriteValue(value == null ? (DateTime?)null : (DateTime)value);
						return;

#if HAVE_DATE_TIME_OFFSET
                    case PrimitiveTypeCode.DateTimeOffset:
                        writer.WriteValue((DateTimeOffset)value);
                        return;

                    case PrimitiveTypeCode.DateTimeOffsetNullable:
                        writer.WriteValue((value == null) ? (DateTimeOffset?)null : (DateTimeOffset)value);
                        return;
#endif
					case PrimitiveTypeCode.Decimal:
						writer.WriteValue((decimal)value);
						return;

					case PrimitiveTypeCode.DecimalNullable:
						writer.WriteValue(value == null ? (decimal?)null : (decimal)value);
						return;

					case PrimitiveTypeCode.Guid:
						writer.WriteValue((Guid)value);
						return;

					case PrimitiveTypeCode.GuidNullable:
						writer.WriteValue(value == null ? (Guid?)null : (Guid)value);
						return;

					case PrimitiveTypeCode.TimeSpan:
						writer.WriteValue((TimeSpan)value);
						return;

					case PrimitiveTypeCode.TimeSpanNullable:
						writer.WriteValue(value == null ? (TimeSpan?)null : (TimeSpan)value);
						return;

#if HAVE_BIG_INTEGER
                    case PrimitiveTypeCode.BigInteger:
                        // this will call to WriteValue(object)
                        writer.WriteValue((BigInteger)value);
                        return;

                    case PrimitiveTypeCode.BigIntegerNullable:
                        // this will call to WriteValue(object)
                        writer.WriteValue((value == null) ? (BigInteger?)null : (BigInteger)value);
                        return;
#endif
					case PrimitiveTypeCode.Uri:
						writer.WriteValue((Uri)value);
						return;

					case PrimitiveTypeCode.String:
						writer.WriteValue((string)value);
						return;

					case PrimitiveTypeCode.Bytes:
						writer.WriteValue((byte[])value);
						return;

#if HAVE_DB_NULL_TYPE_CODE
                    case PrimitiveTypeCode.DBNull:
                        writer.WriteNull();
                        return;
#endif
					default:
#if HAVE_ICONVERTIBLE
                        if (value is IConvertible convertible)
                        {
                            ResolveConvertibleValue(convertible, out typeCode, out value);
                            continue;
                        }
#endif

						// write an unknown null value, fix https://github.com/JamesNK/Newtonsoft.Json/issues/1460
						if (value == null)
						{
							writer.WriteNull();
							return;
						}

						throw CreateUnsupportedTypeException(writer, value);
				}
			}
		}