private void WriteType(string propertyName, JsonWriter writer, JsonSchemaType type) { if (Enum.IsDefined(typeof(JsonSchemaType), type)) { writer.WritePropertyName(propertyName); writer.WriteValue(JsonSchemaBuilder.MapType(type)); } else { IEnumerator <JsonSchemaType> en = EnumUtils.GetFlagsValues(type).Where(v => v != JsonSchemaType.None).GetEnumerator(); if (en.MoveNext()) { writer.WritePropertyName(propertyName); JsonSchemaType first = en.Current; if (en.MoveNext()) { writer.WriteStartArray(); writer.WriteValue(JsonSchemaBuilder.MapType(first)); do { writer.WriteValue(JsonSchemaBuilder.MapType(en.Current)); } while (en.MoveNext()); writer.WriteEndArray(); } else { writer.WriteValue(JsonSchemaBuilder.MapType(first)); } } } }
private void WriteType(string propertyName, JsonWriter writer, JsonSchemaType type) { IList <JsonSchemaType> types; if (System.Enum.IsDefined(typeof(JsonSchemaType), type)) { types = new List <JsonSchemaType> { type }; } else { types = EnumUtils.GetFlagsValues(type).Where(v => v != JsonSchemaType.None).ToList(); } if (types.Count == 0) { return; } writer.WritePropertyName(propertyName); if (types.Count == 1) { writer.WriteValue(JsonSchemaBuilder.MapType(types[0])); return; } writer.WriteStartArray(); foreach (JsonSchemaType jsonSchemaType in types) { writer.WriteValue(JsonSchemaBuilder.MapType(jsonSchemaType)); } writer.WriteEndArray(); }