Tôi đã tạo biểu thức lambda trong thời gian chạy và muốn đánh giá nó - làm cách nào để thực hiện điều đó? Tôi chỉ muốn chạy các biểu hiện của chính nó, không phải chống lại bất kỳ bộ sưu tập hoặc các giá trị khác.Nhận kết quả từ Biểu thức
Ở giai đoạn này, khi nó được tạo, tôi có thể thấy rằng nó thuộc loại Expression<Func<bool>>
, với giá trị là {() => "MyValue".StartsWith("MyV")}
.
Tôi nghĩ tại thời điểm đó tôi chỉ có thể gọi var result = Expression.Invoke(expr, null);
chống lại nó và tôi sẽ có kết quả boolean của mình. Nhưng điều đó chỉ trả lại một số InvocationExpression
, trong trình gỡ lỗi trông giống như {Invoke(() => "MyValue".StartsWith("MyV"))}
.
Tôi khá chắc chắn tôi đã đóng, nhưng không thể tìm ra cách để có được kết quả của mình!
Cảm ơn.
Cảm ơn , chính xác những gì tôi đã mất tích. Và giải thích rõ ràng quá :) – Marcus
@Marcus - Rất vui được giúp đỡ! –
Chỉ cần một chút đường cú pháp. Bạn có thể thay thế hai dòng cuối cùng chỉ bằng một dòng: Boolean result = expression.Compile()(); –