Sto provando a scrivere un comparatore di oggetto generico per l'ordinamento, ma ho notato che non gestisce l'istanza in cui uno dei valori che sta confrontando è nullo. Quando un oggetto è nullo, voglio che lo tratti allo stesso modo della stringa vuota. Ho provato a impostare i valori nulli su String.Empty ma poi ottengo un errore di "Oggetto deve essere di tipo String" quando si chiama CompareTo() su di esso.Come posso rendere null il mio comparatore generico (IComparer)?
public int Compare(T x, T y)
{
PropertyInfo propertyInfo = typeof(T).GetProperty(sortExpression);
IComparable obj1 = (IComparable)propertyInfo.GetValue(x, null);
IComparable obj2 = (IComparable)propertyInfo.GetValue(y, null);
if (obj1 == null) obj1 = String.Empty; // This doesn't work!
if (obj2 == null) obj2 = String.Empty; // This doesn't work!
if (SortDirection == SortDirection.Ascending)
return obj1.CompareTo(obj2);
else
return obj2.CompareTo(obj1);
}
Sono abbastanza bloccato con questo ora! Qualsiasi aiuto sarebbe apprezzato.
Grazie Anthony, è una sorpresa! Non so davvero perché non sembro mai individuare la soluzione semplice ... – NickG