internal JsonSerializationContext(JsonPropertyWriter visitor, JsonAdapterCollection.Enumerator adapters, TValue value, bool isRoot) { m_Visitor = visitor; m_Adapters = adapters; m_Value = value; m_IsRoot = isRoot; }
internal JsonDeserializationContext(JsonPropertyReader visitor, JsonAdapterCollection.Enumerator adapters, UnsafeValueView view, bool isRoot) { m_Visitor = visitor; m_Adapters = adapters; m_View = view; m_IsRoot = isRoot; }
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); }