Решение Expression.Equal, учитывающее перегрузки «Равно» и неявные операторы.C#

Место общения программистов C#
Ответить
Anonymous
 Решение Expression.Equal, учитывающее перегрузки «Равно» и неявные операторы.

Сообщение Anonymous »

При компиляции кода во время выполнения с использованием деревьев выражений нам может потребоваться проверять объекты неопределенного типа на равенство.

Если бы мы просто писали это вручную для каждого случая, компилятор принял бы во внимание многие вещи за нас. Чаще всего на ум приходят следующие:
  • Если доступна универсальная перегрузка T1.Equals или T2.Equals, она используется.
  • В противном случае, если любой тип имеет неявный оператор, который позволяет нам применить (1), он используется.
  • В противном случае bool Используется Equals(object) (конечно, с учетом возможных переопределений).
К сожалению, Expression.Equal(Expression left, Expression right) не делает всех этих вещей за нас.

Как мы можем добиться того же поведения, которое обычно обеспечивает компилятор?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»