Я хочу сравнить два значения во время выполнения с использованием отражения. Для этого я использовал Comparer.Default.Compare (x, y), но я понял, что это недостаточно. Предположим, я хочу сравнить двойную с одиночной (1.0 == 10). Comparer.Default выдает исключение, потому что он настаивает на том, что оба значения должны быть одного типа (double). Однако для этого существует явное преобразование, которое я действительно хочу использовать.Оператор сравнения с использованием Reflection
Итак, почему я не могу использовать Convert.ChangeType? Возьмем случай 1.25> 1 (double> integer). Если я попробую Convert.ChangeType (1.25, typeof (int)) на 1.25, я получу 1, и это утверждение не будет выполнено, когда действительно 1.25 IS> 1.
Итак, может кто-нибудь предложить способ вызова явное сравнение (если оно существует), которое определяет тип?
Спасибо.
Отличный вариант! Я всегда забываю об использовании динамического для этого. –
Могу ли я сделать это с помощью деревьев выражений? (.NET 2.0 + DLR - это вариант для меня, но 4.0 нет) Я попытался исправить быстрый invoker, который в основном выполнял сравнение Expression.Convert (Expression.Parameter (typeof (single)), typeof (double)) по моему единственному значению, но это не удалось с актом недействительно во время выполнения (не время компиляции). Я мог бы сделать что-то не так, потому что я потратил всего около 5 минут, чтобы попытаться это сделать, а потом пришлось бежать на обед ... – Jeff
@ JeffN825: Думаю, вам нужно будет выработать правильные конверсии для себя. Это будет не очень весело. –