ObjectDelta 1.0.2
See the version list below for details.
dotnet add package ObjectDelta --version 1.0.2
NuGet\Install-Package ObjectDelta -Version 1.0.2
<PackageReference Include="ObjectDelta" Version="1.0.2" />
paket add ObjectDelta --version 1.0.2
#r "nuget: ObjectDelta, 1.0.2"
// Install ObjectDelta as a Cake Addin #addin nuget:?package=ObjectDelta&version=1.0.2 // Install ObjectDelta as a Cake Tool #tool nuget:?package=ObjectDelta&version=1.0.2
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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.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.1.0)
- Fluxera.Utilities (>= 6.1.1)
- JetBrains.Annotations (>= 2022.1.0)
- ObjectStructure (>= 1.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.