Как проверить, можно ли сравнивать, суммировать два типа и т. Д.?

Если даны два типа (Тип a, Тип b), есть ли "хороший" способ выяснить, можно ли сравнивать, суммировать и т. д.?

Я думал, если типы реализуют IConvertible, можно преобразовать оба, скажем, десятичные и выполнить "Convert.ToDecimal(a) > Convert.ToDecimal(b)"?

Я строю оценщик выражений и хочу иметь возможность работать с любым типом объекта и, следовательно, должен знать, можно ли сравнивать тип с другим типом (это НЕ ДОЛЖНО быть одинакового типа с обеих сторон. Например. double > int)

1 ответ

То, что вы можете добавить к типам, зависит от обязательных правил вашего языка программирования. Конкретно неявные преобразования и разрешение перегрузки.

Начиная с.net 3.5 существует класс "Выражение" и связанные вспомогательные классы, которые могут это делать. Решение для перегруженного операторного ограничения в.NET generics

Другие вопросы по тегам