예제 #1
0
 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));
             }
         }
     }
 }
예제 #2
0
        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();
        }