我正在根据用户生成的条件编写一般警报系统。测试值&实际值作为对象处理,因为它们可以是数字,布尔值或字符串,具体取决于所选属性。它需要具有容错能力并且优雅地失败。
所以我正在寻找C#中的通用函数来对各种数据类型进行比较(更大/更小/相等)。
使用IComparable接口不起作用,因为它是特定于类型的,例如,如果testValue为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#中是否还有其他通用比较功能?我希望我不必自己编码所有内容。
答案 0 :(得分:0)
所以面对3个downvotes(好吧,没想到问题那么糟糕......)我将编写自己的自定义比较器,而不是搜索IComparer.CompareTo的非类型特定版本。