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:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 List<classeB> l = new List<classeB>(); l.Sort();
J'ai trouvé deux trois éléments de réponse sur le net dont ce post et j'ai donc fait:
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } }
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!
Partager