using System;
using System.Collections.Generic;
namespace Developpez.Dotnet.Collections
{
///
/// Fournit des méthodes d'extension pour travailler avec des IComparer<T> et des Comparison<T>
///
public static class CompareExtensions
{
///
/// Obtient un IComparer<T> à partir de la comparaison spécifiée
///
/// Type des éléments à comparer
/// La comparaison à utiliser
/// Un IComparer<T> qui utilise la comparaison spécifiée
public static IComparer ToComparer(this Comparison comparison)
{
return new ComparisonComparer(comparison);
}
///
/// Obtient une Comparison<T> à partir du IComparer<T> spécifié
///
/// Type des éléments à comparer
/// Comparateur à utiliser
/// La comparaison équivalente au IComparer<T> spécifié
public static Comparison ToComparison(this IComparer comparer)
{
return comparer.Compare;
}
///
/// Inverse le IComparer<T> spécifié
///
/// Le type des éléments à comparer
/// Le comparateur à inverser
/// Un comparateur avec une logique inversée
public static IComparer Reverse(this IComparer comparer)
{
return new ReverseComparer(comparer);
}
///
/// Inverse la Comparison<T> spécifiée
///
/// Le type des éléments à comparer
/// La comparaison à inverser
/// Une comparaison avec une logique inversée
public static Comparison Reverse(this Comparison comparison)
{
return (x, y) => comparison(y, x);
}
}
}