Skip to content

Preserving object references doesn't work #85

@Horusiath

Description

@Horusiath

While working on #82 I've found out that SerializerOptions.PreserveObjectReferences actually never worked for user-defined objects. Example:

var serializer = new Serializer(new SerializerOptions(preserveObjectReferences: true));
var serializerSession = new SerializerSession(serializer);
var deserializerSession = new DeserializerSession(serializer);

using (var stream = new MemoryStream())
{
    var o = new MyClass {First = "hello", Second = 123};

    serializer.Serialize(o, stream, serializerSession); // serialize object 1st time
    stream.Position = 0;
    serializer.Serialize(o, stream, serializerSession); // serialize it again using the same session
}

First serialization passes, but second one throws ArgumentException: An item with the same key has already been added.. From what I've seen, generated object serializer simply doesn't look it object has been saved previously before trying to serialize it again.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions