Пример #1
0
 internal JsonSerializationContext(JsonPropertyWriter visitor, JsonAdapterCollection.Enumerator adapters, TValue value, bool isRoot)
 {
     m_Visitor  = visitor;
     m_Adapters = adapters;
     m_Value    = value;
     m_IsRoot   = isRoot;
 }
Пример #2
0
 internal JsonDeserializationContext(JsonPropertyReader visitor, JsonAdapterCollection.Enumerator adapters, UnsafeValueView view, bool isRoot)
 {
     m_Visitor  = visitor;
     m_Adapters = adapters;
     m_View     = view;
     m_IsRoot   = isRoot;
 }
Пример #3
0
        internal void ReadValueWithAdapters <TValue>(ref TValue value, UnsafeValueView view, JsonAdapterCollection.Enumerator adapters, bool isRoot = false)
        {
            while (adapters.MoveNext())
            {
                switch (adapters.Current)
                {
                case IJsonAdapter <TValue> typed:
                    try
                    {
                        value = typed.Deserialize(new JsonDeserializationContext <TValue>(this, adapters, view, isRoot));
                    }
                    catch (Exception e)
                    {
                        m_SerializedTypeProvider.Events.Add(new DeserializationEvent(EventType.Exception, e));
                    }
                    return;

                case Adapters.Contravariant.IJsonAdapter <TValue> typedContravariant:
                    try
                    {
                        // NOTE: Boxing
                        value = (TValue)typedContravariant.Deserialize((IJsonDeserializationContext) new JsonDeserializationContext <TValue>(this, adapters, view, isRoot));
                    }
                    catch (Exception e)
                    {
                        m_SerializedTypeProvider.Events.Add(new DeserializationEvent(EventType.Exception, e));
                    }
                    return;
                }
            }

            ReadValueWithoutAdapters(ref value, view, isRoot);
        }