-
Notifications
You must be signed in to change notification settings - Fork 147
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cannot deserialize object that overrides GetHashCode() #128
Comments
It looks like _cirrev is used for a rapid lookup of previous data, which unfortunately means I moved that block to the wrong place, as an array of identical structs is failing now. I'll keep tinkering with it, but I would appreciate a proper fix if you find time. |
For reference, I kind of got there with setting |
To be custom sort-able, I believe you only need to implement |
That's a great tip. The situation is unchanged however. The time at which the class instance is added to a Dictionary, everything is null. Even if I default constructed all the members (strings) to be string.Empty, that runs the risk of colliding with another element that legitimately has empty members, since you're using .Add to put objects in the dictionary. If you need an example class, I can send you one. That might be easier |
I have a complex object that needs to have only two fields need to be considered for the sortable order of the object. So I override int GetHashCode() and return a hash code constructed of those two fields. I get an exception here:
In ParseDictionary:
JSON.cs (725) at "_circobj.TryGetValue(o, out circount) == false)"
o does not have any members set yet, so it dereferences null while calculating the hash for the object. I suppose I could provide a constructor, but the hash code would be meaningless at that point. I'm guessing this is how you handle circular references?
I "solved" this issue by taking the block at 725 and moving it just before the return, although I'm not certain it still works as you intended this way.
The text was updated successfully, but these errors were encountered: