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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
	}
}
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!