ソート用の汎用オブジェクト比較関数を記述しようとしていますが、比較対象の値の1つがnullのインスタンスが処理されないことに気付きました。オブジェクトがnullの場合、空の文字列と同じ扱いをしたい。私はnull値をString.Emptyに設定しようとしましたが、次にCompareTo()を呼び出すときにObjectがString型である必要があります。汎用比較元(IComparer)がNULLを処理するにはどうすればよいですか?
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);
}
私はこれで今非常に固執しています!どんな助けもありがとう。
ありがとうアンソニー、それは治療を働く!なぜ私は単純な解決策を見つけられないのか分かりません... – NickG