Open klootas opened 3 years ago
Hi @klootas, thanks for reporting this. I haven't really considered HashSets.
I'll have to look into this, but in the meantime you might find some answers here: https://github.com/jilleJr/Newtonsoft.Json-for-Unity/discussions/51#discussioncomment-185183, I believe it's related.
In my project, I (de)serialized HashSets successfully in Engine, Windows, MacOS, and iOS. But, when I build for Android with IL2CPP, I get the error above.
Hi @fahall! Do you have access to the errors you receive?
You may be able to workaround it by adding such a script to your project: (does not need to be added to any GameObject)
using System;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json.Utilities;
public class AotTypeEnforcer : MonoBehaviour
{
public void Awake()
{
AotHelper.EnsureList<MyHashSetType>();
AotHelper.Ensure(() =>
{
_ = new HashSet<MyHashSetType>(new MyHashSetType[0]);
});
}
}
It seems that deserializing a class with a property of type HashSet yields the following runtime exception in WebGL:
ArgumentNullException value cannot be null parameter name: method
Changing it to a List works though.