Пример #1
0
        public static void ReadObject <TItem, TRoot>(this JsonReader reader, TRoot root, TItem item, Dictionary <string, Action <JsonReader, TRoot, TItem> > setters)
        {
            if (reader.TokenType == JsonToken.Null)
            {
                return;
            }

            reader.Expect(JsonToken.StartObject);
            reader.Read();

            while (reader.TokenType == JsonToken.PropertyName)
            {
                string propertyName = (string)reader.Value;
                reader.Read();

                if (!setters.TryGetValue(propertyName, out var setter))
                {
                    throw new JsonReaderException($"Unknown property {typeof(TItem).Name}.{propertyName}.");
                }

                setter(reader, root, item);
                reader.Read();
            }

            reader.Expect(JsonToken.EndObject);
        }