Compare Objects Support

$ 289.95

Project Description

What you have been waiting for. Perform a deep compare of any two .NET objects using reflection. Shows the differences between the two objects. Compare .NET Objects is an open source project with an MS-PL license with no commercial support. Purchasing this option enables a perpetual MIT license with commercial support for a period of one year for all developers at your organization.


  • Compatible with .NET Framework 4.0 and higher.
  • .NET Standard 1.3 Build Compatible with .NET Core 1.0, Mono 4.6, Xamarin.iOS 10.0, Xamarin.Mac 3.0, Xamarin.Android 7.0, Universal Windows Platform 10.0
  • .NET Standard 2.0 Build Compatible with .NET Core 2.0, Mono 5.4, Xamarin.iOS 10.14, Xamarin.Mac 3.8, Xamarin.Android 8.0, Universal Windows Platform 10.0.16299, Unity 2018.1
  • .NET Standard 2.1 Build Compatible with .NET 5, .NET 6, Mono 6.4, Xamarin.iOS 12.16, Xamarin.Mac 5.16, Xamarin.Android 10.0

NuGet Package

AppVeyor Status NuGet Version NuGet Downloads

Github Project


Install with NuGet Package Manager Console

Install-Package CompareNETObjects

Install with .NET CLI

dotnet add package CompareNETObjects


Feature Overview

  • Compare Children (on by default)
  • Handling for Trees with Children Pointing To Parents (Circular References)
  • Compares Publicly Visible Class Fields and Properties
  • Compares Private Fields and Properties (off by default)
  • Source code in C#
  • NUnit Test Project Included with over 275+ unit tests
  • Ability to load settings from a config file for use with powershell
  • Ability to pass in the configuration
  • Ability to save and load the configuration as json
  • Test Extensions .ShouldCompare and .ShouldNotCompare
  • Several configuration options for comparing private elements, ignoring specific elements, including specific elements.
  • Property and Field Info reflection caching for increased performance
  • Rich Differences List or simple DifferencesString
  • Difference Callback
  • Supports custom comparison for types and properties
  • ElapsedMilliseconds indicates how long the comparison took
  • Thread Safe
  • Beyond Compare Report
  • WinMerge Report
  • CSV Report
  • User Friendly Report
  • HTML Report


  • Ability to IgnoreCollectionOrder to compare lists of different lengths
  • Ability to ignore indexer comparison
  • Ability to ignore types
  • Ability to ignore specific members by name or by wildcard
  • Interface member filtering
  • Ability to treat string.empty and null as equal
  • Ability to ignore string leading and trailing whitespace
  • Case insensitive option for strings
  • Ignore millisecond differences between DateTime values or DateTimeOffset values
  • Precision for double or decimal values

Supported Types

  • Classes
  • Dynamic (Expando objects and Dynamic objects are supported)
  • Anonymous Types
  • Primitive Types (String, Int, Boolean, etc.)
  • Structs
  • IList Objects
  • Collections
  • Single and Multi-Dimensional Arrays
  • Immutable Arrays
  • IDictionary Objects
  • Enums
  • Timespans
  • Guids
  • Classes that Implement IList with Integer Indexers
  • DataSet Data
  • DataTable Data
  • DataRow Data
  • DataColumn Differences
  • LinearGradient
  • HashSet
  • URI
  • IPEndPoint (Supported for everything except .NET Standard 1.0)
  • Types of Type (RuntimeType)
  • StringBuilder
  • SByte


  • Custom Collections with Non-Integer Indexers cannot be compared.
  • Private properties and fields cannot be compared for .NET Core 1.3. They are allowed to be compared in .NET Core 2.0 and higher.
  • When ignoring the collection order, the collection matching spec must be a property on the class. It cannot be a field or a property on a child or parent class. The property has to be a simple type.

Getting Started

Help File


Related Products