Giter Club home page Giter Club logo

Comments (6)

ian-g-holm-intel avatar ian-g-holm-intel commented on July 19, 2024 1

But an IntPtr is simply a struct that points to that address. So isn't cloning the IntPtr as simple as creating a new IntPtr that points to the same address? The question of "what" is at that address shouldn't be relevant to the cloning process.

from deepcloner.

force-net avatar force-net commented on July 19, 2024

It can be problematic on Windows due use of native handles, which are problematic to clone. When you dispose one object, it closes native handle, so, other object stops to work. And in different classes - different policy for using native resources. I do not found way to make correct work for these types in any situation.
May be I'll try to make something with this type. Can you describe, which effects on Font clone occur?

from deepcloner.

 avatar commented on July 19, 2024

The solution is to identify the type and re-new a new object. It would solve away most of the problem, I'm not familiar with whether DeepCloner has a special tool to handle this. So if my class involves related objects, I would consider writing deep copies and using DeepCloner for other objects to solve it.

from deepcloner.

ian-g-holm-intel avatar ian-g-holm-intel commented on July 19, 2024

I'm having a similar problem cloning an Exception that includes an IntPtr in the TargetSite property. Is it possible to have DeepCloner ignore certain properties in Exception such as TargetSite?

from deepcloner.

force-net avatar force-net commented on July 19, 2024

Every IntPtr is a problem. In dotnet it simply native int (long/int depends on architecture). But it points to some unmanaged resource. And when we clone object - two object begun to own this resource and use it. But they do no not know about each other and can release it or do something other that will cause an error.
If DeepCloner will not copy IntPtr (e.g. set it to 0) - second object can throw NullPointerException but in some native way.
Some handles can be safely cloned, but other is impossible for this operation.
As result, it is very serious problem, and I do not know, what I can do with this globally.

from deepcloner.

sgf avatar sgf commented on July 19, 2024

Intptr is just a pointer, essentially just a nint. You only need to copy its value to the new nint/IntPtr structure like nint.

from deepcloner.

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.