private static TypeSchemaGreen GetFieldType(string typeName, IDictionary <string, TypeSchemaGreen> known) { if (known.TryGetValue(typeName, out var res)) { return(res); } if (WellKnownTypeSchemaGreen.ByCode.TryGetValue(typeName, out var wkt)) { known.Add(wkt.SchemaName, wkt); return(wkt); } if (typeName.EndsWith("[]")) { var at = new ArrayTypeSchemaGreen(Option.None, -1); known.Add(typeName, at); var et = GetFieldType(typeName.Substring(0, typeName.Length - 2), known); at = new ArrayTypeSchemaGreen(at, Option.None, et.Id); known[typeName] = at; return(at); } if (typeName.EndsWith("?")) { var ot = new NullableTypeSchemaGreen(Option.None, -1); known.Add(typeName, ot); var et = GetFieldType(typeName.Substring(0, typeName.Length - 1), known); ot = new NullableTypeSchemaGreen(ot, Option.None, et.Id); known[typeName] = ot; return(ot); } var rt = new RefTypeSchemaGreen(); known.Add(typeName, rt); return(rt); }
public NullableTypeSchema(ServiceSchema service, NullableTypeSchemaGreen green) { Service = service; _green = green; }