C # сравнивает два объекта неизвестных типов (включая ссылочные типы и типы значений)

Возможно ли в C # сравнивать два объекта неизвестных типов (включая ссылочные и значения типов), используя их компараторы типов, если они существуют?

цель - написать функцию, которая будет иметь такую ​​сигнатуру:

public bool Compare(object a, object b)
{
     // compare logic goes here
}

Что вернет

Compare(100d, 100d) == true
Compare(100f, 100f) == true
Compare("hello", "hello") == true
Compare(null, null) == true 
Compare(100d, 101d) == false
Compare(100f, null) == false

// Use type comparators where possible, i.e.:
Compare(new DateTime(2010, 12, 01), new DateTime(2010, 12, 01)) == true
Compare(new DateTime(2010, 12, 01), new DateTime(2010, 12, 02)) == false
Compare(new DateTime(2010, 12, 01), null) == false

Есть ли общий подход к решению этой проблемы, который работал бы для любого типа объекта?

38
задан Duane 2 December 2010 в 07:22
поделиться