Skip to content

Simple & efficient library for deep copying .NET objects

License

Notifications You must be signed in to change notification settings

ReubenBond/DeepCopy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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!

About

Simple & efficient library for deep copying .NET objects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages