Dot-Net

System.Linq.Expressions.LogicalBinaryExpression 類有什麼問題?

  • January 23, 2016

我正在嘗試解析 Expression 並且在某些時候我必須解析帶有 type 的表達式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”(您是否缺少程序集引用?)

這怎麼可能?

LogicalBinaryExpressioninternal,所以:

  1. 更難得到 is 作為Type,你不能簡單地使用typeof(LogicalBinaryExpression)or x is LogicalBinaryExpression
  2. 你不會找到任何關於它的文件。
  3. 你根本不應該使用它。這是一個可以隨時更改的實現細節。

您應該檢查BinaryExpression或檢查NodeType表達式。

這同樣適用於MethodBinaryExpression

引用自:https://stackoverflow.com/questions/9241607