Как проверить, можно ли сравнивать, суммировать два типа и т. Д.? - PullRequest
7 голосов
/ 25 марта 2010

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

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

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

1 Ответ

1 голос
/ 25 марта 2010

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

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

...