Okay, so habe ich ein Szenario ähnlich dem folgenden Code, ich habe eine Elternklasse, die IComparable und eine Kindklasse implementiert.Ich habe ein Problem mit IComparable und die Sammlung Sortiermethode
class Parent : IComparable<Parent>
class Child : Parent
Child a = new Child();
Child b = new Child();
a.CompareTo(b);
Nun werden die oben funktioniert gut, ich kann zwei des Kindes vergleichen zueinander Objekte kein Problem
List<Child> l = new List<Child>();
l.Add(b);
l.Add(a);
l.Sort();
Die oben zwar mit einer InvalidOperationException ausfällt. Kann jemand bitte erklären, warum diese Art nicht funktioniert, wenn die Kindklasse die IComparable-Schnittstelle implementiert, oder zumindest scheint es mir, dass es tut.
Okay, hier ist meine CompareTo Implementierung für meine eigentliche Elternklasse
public int CompareTo(IDType other)
{
return this.Name.ToString().CompareTo(other.ToString());
}
Ihre Probe sagt „neue Liste()“, die ich vermute, bin ein Tippfehler ist ... was ist der eigentliche generischen Typ auf der Liste Sie erstellen? –
Oh sorry yeah es war ein Tippfehler, ich hatte Liste l = neue Liste (); Ich denke, es ist ziemlich offensichtlich, welche generische Typenliste ich erstellt habe. –
CalvinR
Können wir den Code aus Ihrer IComparable-Implementierung sehen? –