Ok, quindi ho uno scenario simile al codice seguente, ho una classe genitore che implementa IComparable e una classe figlia.Ho un problema con IComparable e il metodo di ordinamento della raccolta
class Parent : IComparable<Parent>
class Child : Parent
Child a = new Child();
Child b = new Child();
a.CompareTo(b);
Ora le opere di cui sopra bene, posso confrontare due del bambino oggetti tra di loro non è un problema
List<Child> l = new List<Child>();
l.Add(b);
l.Add(a);
l.Sort();
È possibile che non riesce però con un'InvalidOperationException. Qualcuno può spiegare perché questo tipo non funziona quando la classe figlio implementa l'interfaccia IComparable, o almeno mi sembra che lo faccia.
Va bene qui è la mia implementazione CompareTo per la mia classe di padre effettivo
public int CompareTo(IDType other)
{
return this.Name.ToString().CompareTo(other.ToString());
}
il tuo campione dice "nuova lista()", che sto cercando di indovinare è un errore di battitura ... qual è il tipo generico reale nella lista che si sta creando? –
Oh scusa si era un errore di battitura, avevo la lista l = nuova lista (); Penso che sia abbastanza ovvio quale lista di tipi generici stavo creando. –
CalvinR
Possiamo vedere il codice dalla tua implementazione IComparable? –