public void AddSerializer(ISerializePreferences serializer)
        {
            if (m_Preferences != null)
            {
                Deserialize(serializer);
            }

            m_Serializers.Add(serializer);
        }
        void Deserialize(ISerializePreferences serializer)
        {
            SerializedPreferenceItem item;

            if (m_Preferences.items.TryGetValue(serializer.GetType(), out item))
            {
                var payload = JsonUtility.FromJson(item.payload, Type.GetType(item.payloadType));
                serializer.OnDeserializePreferences(payload);
            }
        }
        static void Deserialize(SerializedPreferences preferences, ISerializePreferences serializer)
        {
            SerializedPreferenceItem item;

            if (preferences.items.TryGetValue(serializer.GetType(), out item))
            {
                var type = Type.GetType(item.payloadType);
                if (type == null)
                {
                    return;
                }

                var payload = JsonUtility.FromJson(item.payload, type);
                serializer.OnDeserializePreferences(payload);
            }
        }
 public void RemoveSerializer(ISerializePreferences serializer)
 {
     // TODO: Support serializing one type at a time
     SerializePreferences();
     m_Serializers.Remove(serializer);
 }