But sometime, we do not know the type at compile time, usually when reflection is used.
For example, if I define an interface 'IGameSettings', and then I use reflection in order to get all the struct that implement that interface, I get several different types that I'd like to save/load using ES3.
That can be useful if I want to take care myself of saving/loading settings for modders for example, all they would have to do is to create a struct that inherit from 'IGameSettings'.
I think it can be achieved using something like that (in addition to the existing methods):
public System.Object Load(string key, System.Object defaultValue, Type T) public void Save(string key, System.Object value, Type T)Obviously some casting would be necessary, but when we use reflection it's usually not a problem, and that way, it would be possible to load and save data without knowing the type at compile time, while still having all the typing features of ES3.