# 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 AppVeyor Status NuGet Version NuGet Downloads 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