GithubHelp home page GithubHelp logo

Comments (4)

pCYSl5EDgo avatar pCYSl5EDgo commented on May 23, 2024

How do you think this feature should be implemented?
Serialize may be implemented like T? but how do you implement Deserialize?
I do not know where to store deserialized object.

from messagepack-csharp.

AArnott avatar AArnott commented on May 23, 2024

It is a quite useful type for serialization of data that contain multiple instances of the same object,

I think you mean multiple references to the same object.
And msgpack doesn't support reference equality in its serializer, so even if we serialized such a type, you'd get each reference serialized as its own value, and upon deserialization, each "weak reference" object would be its own value, and as there would be no strong references to the object after deserialization, every copy would be GC'd, and you'd be left empty.

IMO you shouldn't be serializing weak references like this as it doesn't make sense when you think about the round trip.

from messagepack-csharp.

byte-arcane avatar byte-arcane commented on May 23, 2024

I think you mean multiple references to the same object.

Correct, sorry for the confusion.

msgpack doesn't support reference equality in its serializer
IMO you shouldn't be serializing weak references like this as it doesn't make sense when you think about the round trip.

Without thinking about limitations of the language/code, it's perfectly sensible: there's one resource owner and several references to it. I'm not sure how hard C#, or the design of this library makes this though. In C++ for example, shared_ptr and weak_ptr are normally supported in libraries such as cereal, so it's not a conceptual issue.

from messagepack-csharp.

AArnott avatar AArnott commented on May 23, 2024

So if the assumption is that someone in the object graph to be serialized has a strong reference to it, then yes, a deserialized copy could theoretically actually retain the object long enough to be noticed.

But it's all moot at the moment because messagepack doesn't de-duplicate objects during serialization. Every reference to an object gets serialized on its own. When and if #57 is ever addressed, that may allow something like weak reference support to make sense.

from messagepack-csharp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.