ObjectDelta 2.1.0
See the version list below for details.
dotnet add package ObjectDelta --version 2.1.0
NuGet\Install-Package ObjectDelta -Version 2.1.0
<PackageReference Include="ObjectDelta" Version="2.1.0" />
paket add ObjectDelta --version 2.1.0
#r "nuget: ObjectDelta, 2.1.0"
// Install ObjectDelta as a Cake Addin #addin nuget:?package=ObjectDelta&version=2.1.0 // Install ObjectDelta as a Cake Tool #tool nuget:?package=ObjectDelta&version=2.1.0
ObjectDelta
A libary that creates a delta of two object instances.
The library is inspired by a blog post of Daniel Wertheim about
producing a delta of two objects of the same type using the library Structurizer.
Unfortunately Structurizer will not provide index information
for properties with a null
value, the property of a collection and for null
collection items.
This information is needed to be able to record object changes from null
to a value and vice versa.
I decided to create a library based on Structurizer that fits
my needs for the delta creation.
Usage
Customer first = new Customer
{
FirstName = "Sherlock",
LastName = "Olmes",
Address = new Address
{
Street = "Baker Street",
Number = "900",
Zip = "NW1",
City = "London",
Country = "England"
},
Tags = new string[] { "detective", "smart" }
};
Customer second = new Customer
{
FirstName = "Sherlock",
LastName = "Holmes",
Address = new Address
{
Street = "Baker Street",
Number = "221b",
Zip = "NW1",
City = "London",
Country = "England"
},
Tags = new string[] { "detective", "smart", "addict" }
};
ObjectDelta<Customer> result = ObjectComparer.Compare(first, second);
The resulting ObjectDelta<Customer>
provides a flat list containing the deltas for every property,
inclusing nested properties of complex types (like the Address
) and colleection items.
The output of ToString()
of the result of operation above:
LastName (Olmes => Holmes)
Address (ConsoleApp1.Address => ConsoleApp1.Address)
Address.Number (900 => 221b)
Tags (System.String[] => System.String[])
Tags[1] (addict => genius)
References
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- Fluxera.Guards (>= 7.1.0)
- Fluxera.Utilities (>= 7.1.0)
- JetBrains.Annotations (>= 2022.3.1)
- ObjectStructure (>= 2.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.