Je suis en train de trier un ArrayList
d'articles personnalisés et obtenir « au moins un objet doit implémenter IComparable. » malgré avoir implémenté l'interface IComparable
pour eux. J'appelle simplement le Sort()
par défaut aucun paramètre ou n'importe quoi. La définition de l'objet que j'essaie de trier est la suivante:Problèmes avec tri et de IComparable
class AssetItem : System.IComparable<AssetItem>
{
public string AssetName { get; set; }
public int AssetID { get; set; }
public int CompareTo(AssetItem item)
{
if (null == item)
{
return 1;
}
else if (this.AssetID < item.AssetID)
{
return -1;
}
else if (this.AssetID == item.AssetID)
{
return this.AssetName.CompareTo(item.AssetName);
}
else
{
return 1;
}
}
Ce code se construit très bien. Une autre chose à garder à l'esprit, et je soupçonne que c'est peut-être le problème même si je ne comprends pas comment, la classe ci-dessus est une classe interne. Si c'est ce qui me fait trébucher, comment feriez-vous pour comparer une classe interne?
Doh, qui était un nobrainer. Merci pour l'aide en tout cas! – Trajanus
J'ai eu le même problème, merci! Cela me fait me demander, pourquoi IComparable hérite d'IComparable? –
jrummell
@jrummell: Cela le forcerait à essayer de se comparer à * n'importe quel * objet, au lieu de juste les objets du bon type, ce qui est un peu pénible. –