Simple & efficient library for deep copying .NET objects
Described in this blog post: https://reubenbond.github.io/posts/codegen-2-il-boogaloo
Install via NuGet:
PM> Install-Package DeepCopy
// 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!