если дали два типа (Тип a, Тип b), там какой-либо "хороший" способ узнать, могут ли те два быть сравнены, суммированы и т.д.?
Я думал, реализуют ли типы IConvertible
, можно было преобразовать и в, позволяет, говорят, что десятичное число и работает"Convert.ToDecimal(a) > Convert.ToDecimal(b)
" ?
Я создаю средство анализа выражения и хочу смочь работать с любым видом объекта и таким образом должен знать, может ли тип сравниться с другим типом (это не должны быть те же типы с обеих сторон. например. double > int
)
То, что вы можете добавлять к типам, зависит от правил привязки вашего языка программирования. В частности, неявные преобразования и разрешение перегрузки.
Начиная с .net 3.5 существует класс "Expression" и связанные вспомогательные классы, которые могут это делать. Решение для ограничения перегруженного оператора в обобщенных шаблонах .NET