From 092400202458a5fe00b291a2e6dac3424c5f3694 Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Tue, 13 Mar 2018 11:33:15 -0400 Subject: [PATCH] Initial commit of PropertyComparer --- .../Comparers/PropertyComparer.cs | 30 +++++++++++++++++++ .../PropertyEqualityComparer.cs | 2 +- .../ICD.Common.Utils_SimplSharp.csproj | 3 +- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 ICD.Common.Utils/Comparers/PropertyComparer.cs rename ICD.Common.Utils/{Extensions => Comparers}/PropertyEqualityComparer.cs (96%) diff --git a/ICD.Common.Utils/Comparers/PropertyComparer.cs b/ICD.Common.Utils/Comparers/PropertyComparer.cs new file mode 100644 index 0000000..1e75327 --- /dev/null +++ b/ICD.Common.Utils/Comparers/PropertyComparer.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; + +namespace ICD.Common.Utils.Comparers +{ + public sealed class PropertyComparer : IComparer + { + private readonly IComparer m_Comparer; + private readonly Func m_GetProperty; + + /// + /// Constructor. + /// + /// + /// + public PropertyComparer(IComparer comparer, Func getProperty) + { + m_Comparer = comparer; + m_GetProperty = getProperty; + } + + public int Compare(TParent x, TParent y) + { + TProperty a = m_GetProperty(x); + TProperty b = m_GetProperty(y); + + return m_Comparer.Compare(a, b); + } + } +} diff --git a/ICD.Common.Utils/Extensions/PropertyEqualityComparer.cs b/ICD.Common.Utils/Comparers/PropertyEqualityComparer.cs similarity index 96% rename from ICD.Common.Utils/Extensions/PropertyEqualityComparer.cs rename to ICD.Common.Utils/Comparers/PropertyEqualityComparer.cs index 57ef41a..b425a22 100644 --- a/ICD.Common.Utils/Extensions/PropertyEqualityComparer.cs +++ b/ICD.Common.Utils/Comparers/PropertyEqualityComparer.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace ICD.Common.Utils.Extensions +namespace ICD.Common.Utils.Comparers { /// /// Allows for comparing items based on some property. diff --git a/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj b/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj index 06fa71a..77241a9 100644 --- a/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj +++ b/ICD.Common.Utils/ICD.Common.Utils_SimplSharp.csproj @@ -74,6 +74,7 @@ + @@ -87,7 +88,7 @@ - +