2014-01-16 18 views
-1

我正在基於用戶生成的條件編寫一般性警報系統。測試值&實際值作爲對象處理,因爲它們可能是數字,布爾值或字符串,具體取決於所選屬性。它需要容錯,並且優雅地失敗。通用比較函數,非類型特定的,容錯

所以我在C#中尋找一個通用函數來爲各種數據類型進行比較(大於/小於/等於)。

使用IComparable接口不能正常工作,因爲它的類型是專用的,例如,如果測試值是的Int32和comparsonValue這會崩潰是十進制:

object testValue = (int)10; 
object comparisonValue = (decimal)11; 

var comparison = ((IComparable)testValue).CompareTo(comparisonValue) 

// Crashes with {System.SystemException}: {"Object must be of type Int32."} 

有沒有在C#中任何其他通用的比較函數?我希望我不必自己編寫一切代碼。

+4

那麼當有人問如果int小於bool時會發生什麼? –

+0

優雅的失敗。它需要是容錯的。 –

+0

哇,兩個downvotes?我有點迷路。 –

回答

0

因此,面對3 downvotes(好吧,沒想到問題是那麼糟糕...)我將編寫我自己的自定義比較器,而不是搜索非類型特定版本的IComparer.CompareTo 。

+0

這是怎麼回事? –