System.Linq.Expressions.LogicalBinaryExpression类有什么问题?

Vit*_*kov 13 .net expression-trees

我正在尝试解析Expression,在某些时候我必须用类型解析表达式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"

所以现在我只是有错误

名称空间'System.Linq.Expressions'中不存在类型或命名空间名称'LogicalBinaryExpression'(您是否缺少程序集引用?)

这怎么可能?

svi*_*ick 16

LogicalBinaryExpression是的internal,所以:

  1. 获得更难是一个Type,你不能简单地使用typeof(LogicalBinaryExpression)x is LogicalBinaryExpression.
  2. 您将找不到任何有关它的文档.
  3. 你根本不应该使用它.这是一个可以随时更改的实现细节.

你应该检查BinaryExpression,或检查NodeType表达式.

这同样适用于MethodBinaryExpression.