IComparer, IComparable et tri sur List<T>
Bonjour,
ca fait un ptit moment que je peine sur ce problème alors je me permets dde demander...
j'ai deux classes (pour simplifier..). L'une contient une List<T> de l'autre. J'aimerais non seulement pouvoir appeler:
Code:
1 2
| List<classeB> l = new List<classeB>();
l.Sort(); |
et pouvoir personnaliser la méthode de tri, mais aussi pouvoir "passer un paramètre" à la méthode sort pour spécifier sur quel champ trier.
J'ai trouvé deux trois éléments de réponse sur le net dont ce post et j'ai donc fait:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| classe A:IComparer<classeB>
{
List<classeB>;
private int indiceDeComparaison ;
public int Compare( object lhs, object rhs )
{
if((lhs is classeB)&&(rhs is classeB))
{
return lhs.CompareTo( rhs, IndiceDeComparaison ) ;
}
throw new ArgumentException("object is not an classseB");
}
public int IndiceDeComparaison
{
get{ return indiceDeComparaison ; }
set{ indiceDeComparaison = value ; }
}
[...]
main{
this.indiceDeComparaison = 1;
this.classeB.Sort();
}
classseB: IComparable{
public int CompareTo( classeB element )
{
return ...qqch...;
}
public int CompareTo(classeB element, int indexCritereDeComparaison )
{
... la comparaison souhaitee
}
} |
mais je m'apercois que la méthode sort ne "passe pas" par la méthode Compare et va directement donc à la méthde CompareTo(classeB x).
Ca doit paraitre evident a la plupart d'entre vous, mais je tourne en rond.. serait-il possible de me mettre sur la voie?
merci d'avance!