# Compare-Net-Objects
**Repository Path**: cxprojects/Compare-Net-Objects
## Basic Information
- **Project Name**: Compare-Net-Objects
- **Description**: 你一直在等什么 👍使用反射对任意两个.NET对象进行深层比较。显示两个对象之间的差异。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-04
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[
](http://www.kellermansoftware.com)
[
](http://www.ndepend.com)
# 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.
# Compatibility
* 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
# NuGet Package
http://www.nuget.org/packages/CompareNETObjects
## Installation
Install with NuGet Package Manager Console
```
Install-Package CompareNETObjects
```
Install with .NET CLI
```
dotnet add package CompareNETObjects
```
# Features
## 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 **200+** 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
## Options
* 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 are supported but not DynamicObject)
* 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
* Types of Type (RuntimeType)
* StringBuilder
* SByte
# Limitations
* 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.
* DynamicObject type is not supported but will be implemented in 2020 when the library is versioned to .NET Framework 4.5
* 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
https://github.com/GregFinzer/Compare-Net-Objects/wiki/Getting-Started
# Help File
https://github.com/GregFinzer/Compare-Net-Objects/blob/master/Compare-NET-Objects-Help/Compare-NET-Objects-Help.chm?raw=true
# Licensing
https://github.com/GregFinzer/Compare-Net-Objects/wiki/Licensing