ObjectDelta 1.0.0
See the version list below for details.
dotnet add package ObjectDelta --version 1.0.0
NuGet\Install-Package ObjectDelta -Version 1.0.0
<PackageReference Include="ObjectDelta" Version="1.0.0" />
paket add ObjectDelta --version 1.0.0
#r "nuget: ObjectDelta, 1.0.0"
// Install ObjectDelta as a Cake Addin #addin nuget:?package=ObjectDelta&version=1.0.0 // Install ObjectDelta as a Cake Tool #tool nuget:?package=ObjectDelta&version=1.0.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 | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. 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. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Fluxera.Guards (>= 6.0.12)
- Fluxera.Utilities (>= 6.0.13)
- JetBrains.Annotations (>= 2021.3.0)
- ObjectStructure (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.