TL;DR —
Fast deep cloning library for .NET 8+. Zero-config, works out of the box.
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:
- Install the library:
dotnet add package FastCloner
- Clone your objects:
using FastCloner.Code;
var clone = FastCloner.DeepClone(new { Hello = "world", MyList = new List<int> { 1 } });
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)
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<int> { 1 } });
Intrigued? Try it out:
[story continues]
Written by
@lofcz
Software Engineer
Topics and
tags
tags
csharp|c-sharp|programming|developer-tools|deep-cloning|productivity|deep-cloning-.net|deep-cloning-free-tool
This story on HackerNoon has a decentralized backup on Sia.
Transaction ID: 2gtSUbS9aiBfoxSka_dybkQpKabHn-_8zP-S0uWCo6Y
