U2U.ValueObjectComparers
2.2.0
See the version list below for details.
dotnet add package U2U.ValueObjectComparers --version 2.2.0
NuGet\Install-Package U2U.ValueObjectComparers -Version 2.2.0
<PackageReference Include="U2U.ValueObjectComparers" Version="2.2.0" />
paket add U2U.ValueObjectComparers --version 2.2.0
#r "nuget: U2U.ValueObjectComparers, 2.2.0"
// Install U2U.ValueObjectComparers as a Cake Addin #addin nuget:?package=U2U.ValueObjectComparers&version=2.2.0 // Install U2U.ValueObjectComparers as a Cake Tool #tool nuget:?package=U2U.ValueObjectComparers&version=2.2.0
Here is an example of what a Value Object looks like. No inheritance, so this can also be used for structs.
The Equals
method simply delegates to the ValueObjectComparer
.
Same for the IEquatable
interface implementation. The IEquatable
interface
uses a strongly typed Equals
method, which is better for structs, as it will avoid boxing.
The difference between the built-in object's
Equals
andIEquatable
is that the compiler will pick the most specific matchingEquals(T other)
.
public class SomeObject : IEquatable<SomeObject>
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
=> ValueObjectComparer<SomeObject>.Instance.Equals(this, obj);
public bool Equals([AllowNull] SomeObject other)
=> ValueObjectComparer<SomeObject>.Instance.Equals(this, other);
}
Ignoring Certain Properties
Some Value Objects have calculated properties, and using them in the comparison is not necessary. You might want to use the ValueObjectComparer
for other, non-value-object, types. So you might want to ignore certain properties for short.
Simply add the [Ignore]
attribute to the property, and it won't be used for equality.
[Ignore]
public int NotUsed { get; set; }
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
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on U2U.ValueObjectComparers:
Package | Downloads |
---|---|
U2U.BoardGames
Assembly containing a simple data model for use in training |
GitHub repositories
This package is not used by any popular GitHub repositories.