Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public NullableTypeSchema(ServiceSchema service, NullableTypeSchemaGreen green)
 {
     Service = service;
     _green  = green;
 }