/DeepCopy

Simple & efficient library for deep copying .NET objects

Primary LanguageC#MIT LicenseMIT

DeepCopy

Simple & efficient library for deep copying .NET objects

Described in this blog post: https://reubenbond.github.io/posts/codegen-2-il-boogaloo

Installation:

Install via NuGet:

PM> Install-Package DeepCopy

Usage:

// Add a using directive for DeepCopy.
var poco = new Poco();
var original = new[] { poco, poco };

var result = DeepCopier.Copy(original);

// The result is a copy of the original.
Assert.NotSame(original, result);

// Because both elements in the original array point to the same object, 
// both elements in the copied array also point to the same object.
Assert.Same(result[0], result[1]);

Optionally, classes can be marked using the [Immutable] attribute to tell DeepCopy to skip copying them and return them unmodified. Object can also be wrapped in Immutable<T> using Immutable.Create(value).

The majority of this project was adapted from dotnet/orleans.

PR's welcome!