Возможно ли в 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
Есть ли общий подход к решению этой проблемы, который работал бы для любого типа объекта?