मैं सॉर्टिंग के लिए एक जेनेरिक ऑब्जेक्ट तुलनाकर्ता लिखने की कोशिश कर रहा हूं, लेकिन मैंने देखा है कि यह उस उदाहरण को संभाल नहीं करता है जहां इसकी तुलना की जाने वाली मानों में से एक शून्य है। जब कोई ऑब्जेक्ट शून्य होता है, तो मैं इसे खाली स्ट्रिंग के समान व्यवहार करना चाहता हूं। मैंने स्ट्रिंग को शून्य मानों को सेट करने का प्रयास किया है। लक्षण लेकिन फिर मुझे तुलनात्मक() पर कॉल करते समय "ऑब्जेक्ट टाइप स्ट्रिंग" होना चाहिए।मैं अपने जेनेरिक तुलनाकर्ता (आईसीओएमपेयर) को नल को कैसे संभाल सकता हूं?
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