Можно ли в С# сравнивать два объекта неизвестных типов (включая как ссылочные, так и типы значений) с использованием их компараторов типов, если они существуют?
Цель состоит в том, чтобы написать функцию, которая имела бы такую подпись:
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
Существует ли общий подход к решению этой проблемы, который будет работать для любого типа объекта?