Ben sıralama için genel bir nesne karşılaştırıcısı yazmaya çalışıyorum, ama kıyaslıyor değerlerden biri null nerede örneğini ele vermez fark etmiş. Bir nesne boş olduğunda, boş dizeyle aynı davranmasını istiyorum. Ben String.Empty boş değerler ayarlama denedim ama sonra ben üzerinde CompareTo() çağrılırken "Nesne türü String olmalı" bir hata alıyorum.nasıl jenerik karşılaştırıcısı (IComparer) Tümceyi idare yapabilir?
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);
}
Şimdilik buna sıkıca takıldım! Herhangi bir yardım takdir edilecektir. T
bir genel tür olduğundan
Teşekkürler Anthony, bu bir tedavi! Aslına bakarsan neden basit bir çözümü göremedim ... – NickG