private static bool JsonSerializeBaseClassLibraryType(this JsonWriter writer, string name, object value) { if (null == value) { if (null == name) { writer.ArrayNull(); } else { writer.NullPair(name); } return(true); } if (writer.JsonSerializeBuiltInType(name, value)) { return(true); } if (value is DateTime) { if (null == name) { writer.ArrayValue((DateTime)value); } else { writer.Pair(name, (DateTime)value); } return(true); } if (value is DateTimeOffset) { if (null == name) { writer.ArrayValue((DateTimeOffset)value); } else { writer.Pair(name, (DateTimeOffset)value); } return(true); } if (value is Guid) { if (null == name) { writer.ArrayValue((Guid)value); } else { writer.Pair(name, (Guid)value); } return(true); } if (value is TimeSpan) { if (null == name) { writer.ArrayValue((TimeSpan)value); } else { writer.Pair(name, (TimeSpan)value); } return(true); } if (value is Enum) { if (null == name) { writer.ArrayValue(value.ToString()); } else { writer.Pair(name, value.ToString()); } return(true); } var uri = value as Uri; if (null != uri) { if (null == name) { writer.ArrayValue(uri); } else { writer.Pair(name, uri); } return(true); } if (0 == value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Length) { if (null == name) { writer.ArrayValue(value.ToString()); } else { writer.Pair(name, value.ToString()); } return(true); } return(false); }