2012-02-11 3 views
12

Tôi đang cố gắng phân tích Biểu thức và tại một số điểm, tôi phải phân tích các biểu thức với loại System.Linq.Expressions.LogicalBinaryExpression. Tên lớp này tôi lấy từ đồng hồ gỡ lỗi. expression.GetType().ToString() bằng "System.Linq.Expressions.LogicalBinaryExpression". Nhưng tôi không thể thấy lớp này trong không gian tên System.Linq.Expressions. Không đâu cả. Điều tương tự với lớp học MethodBinaryExpression.Điều gì xảy ra với lớp System.Linq.Expressions.LogicalBinaryExpression?

Để kiểm tra loại I thực sự thích viết

  • expression is LogicalBinaryExpression hoặc
  • expression.GetType() = typeof(LogicalBinaryExpression) nhưng chắc chắn không phải
  • expression.GetType().ToString() == "System.Linq.Expressions.LogicalBinaryExpression"

Vì vậy, bây giờ tôi chỉ có lỗi

Tên loại hoặc không gian tên 'LogicalBinaryExpression' không tồn tại trong không gian tên 'System.Linq.Expressions' (bạn thiếu tham chiếu assembly?)

Làm thế nào điều này có thể?

Trả lời

13

LogicalBinaryExpressioninternal, vì vậy:

  1. Đó là khó khăn hơn để có được là như một Type, bạn không thể chỉ cần sử dụng typeof(LogicalBinaryExpression) hoặc x is LogicalBinaryExpression.
  2. Bạn sẽ không tìm thấy bất kỳ tài liệu nào về nó.
  3. Bạn không nên sử dụng nó. Đó là một chi tiết triển khai có thể thay đổi bất kỳ lúc nào.

Bạn nên kiểm tra BinaryExpression hoặc kiểm tra NodeType của biểu thức.

Điều tương tự cũng áp dụng cho MethodBinaryExpression.