Your resource for web content, online publishing
and the distribution of digital products.
S M T W T F S
 
 
 
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
 
 
 
 
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
31
 
 

New .NET Library Does Deep Cloning Right

DATE POSTED:January 13, 2025

Deep cloning objects has been a major pain point for me for a long time. Recently, I’ve run into a case where after cloning a dictionary ContainsKey no longer worked for items cloned.

\ This inspired me to create a new library FastCloner for the modern .NET Core that would just work. Out of the box. Cyclic references, delegates, read-only collections… as many edge cases covered as possible.

\ There are still some scenarios, such as unmanaged memory, where cloning can go awry, but it should be a major improvement over the prior art. Feel free to check it out!

\ Using FastCloner is straightforward:

\

  1. Install the library:
dotnet add package FastCloner
  1. Clone your objects:
using FastCloner.Code; var clone = FastCloner.DeepClone(new { Hello = "world", MyList = new List { 1 } });

\n Excluding fields & properties from cloning is simple as well:

private class TestPropsWithIgnored { [FastClonerIgnore] // <-- decorate such members with [FastClonerIgnore] public string B { get; set; } = "My string"; public int A { get; set; } = 10; } TestPropsWithIgnored original = new TestPropsWithIgnored { A = 42, B = "Test value" }; TestPropsWithIgnored clone = original.DeepClone(); // clone.B is null (default value of a given type)

\n As a bonus, FastCloner also supports shallow cloning:

// the list is shared between the two instances var clone = FastCloner.ShallowClone(new { Hello = "world", MyList = new List { 1 } });

\ Intrigued? Try it out:

https://github.com/lofcz/FastCloner