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 @@ - +