Что случилось с классом 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' (вам не хватает ссылки на сборку?)
Как это возможно?
Ответы
Ответ 1
LogicalBinaryExpression
internal
, поэтому:
- Труднее получить это как
Type
, вы не можете просто использовать typeof(LogicalBinaryExpression)
или x is LogicalBinaryExpression
.
- Вы не найдете документацию об этом.
- Вы не должны использовать его вообще. Это деталь реализации, которая может меняться в любое время.
Вы должны либо проверить BinaryExpression
, либо проверить NodeType
выражения.
То же самое относится к MethodBinaryExpression
.