2010-03-25 1 views
7

если заданы два типа (тип a, тип b), есть ли «хороший» способ найти , если эти два можно сравнить, суммировать и т. Д.?Как проверить, можно ли сравнивать два типа, суммировать и т. Д.?

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

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

+0

Вот мой вопрос по этой же проблеме. http://stackoverflow.com/questions/2093230/how-to-check-that-i-can-sum-values-of-given-type –

ответ

1

Wether, который вы можете добавить к типам, зависит от правил привязки вашего языка программирования. Специфически неявные преобразования и разрешение перегрузки.

С .net 3.5 есть класс «Выражение» и связанные с ним вспомогательные классы, которые могут это сделать. Solution for overloaded operator constraint in .NET generics