Подтвердить что ты не робот

Что случилось с классом System.Linq.Expressions.LogicalBinaryExpression?

Я пытаюсь разобрать выражение, и в какой-то момент мне нужно разобрать выражения с типом System.Linq.Expressions.LogicalBinaryExpression. Это имя класса, которое я беру из часов отладки. expression.GetType().ToString() равно "System.Linq.Expressions.LogicalBinaryExpression". Но я не могу видеть этот класс в пространстве имен System.Linq.Expressions. Нигде. То же самое с классом MethodBinaryExpression.

Чтобы проверить тип, я действительно предпочитаю писать

  • expression is LogicalBinaryExpression или
  • expression.GetType() = typeof(LogicalBinaryExpression ) но определенно не
  • expression.GetType().ToString() == "System.Linq.Expressions.LogicalBinaryExpression"

Итак, теперь у меня есть ошибка

Тип или имя пространства имен 'LogicalBinaryExpression' не существует в пространстве имен 'System.Linq.Expressions' (вам не хватает ссылки на сборку?)

Как это возможно?

4b9b3361

Ответ 1

LogicalBinaryExpression internal, поэтому:

  • Труднее получить это как Type, вы не можете просто использовать typeof(LogicalBinaryExpression) или x is LogicalBinaryExpression.
  • Вы не найдете документацию об этом.
  • Вы не должны использовать его вообще. Это деталь реализации, которая может меняться в любое время.

Вы должны либо проверить BinaryExpression, либо проверить NodeType выражения.

То же самое относится к MethodBinaryExpression.