-
Notifications
You must be signed in to change notification settings - Fork 77
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
No stable cloning of System.Drawing.Font
object
#30
Comments
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. |
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. |
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? |
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. |
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. |
Intptr is just a pointer, essentially just a nint. You only need to copy its value to the new nint/IntPtr structure like nint. |
I've added support for |
No description provided.
The text was updated successfully, but these errors were encountered: