Hãy xem xét các đoạn mã sau:động LINQ và điều hành quá tải
var vectorTest = new Vector2(1, 2) + new Vector2(3, 4); // Works
var x = Expression.Parameter(typeof(Vector2), "x");
var test = System.Linq.Dynamic
.DynamicExpression.ParseLambda(new[] { x }, null, "x = x + x");
Chạy nó, tôi nhận được ngoại lệ dưới đây:
System.Linq.Dynamic.ParseException là unhandled bởi người dùng mã nhắn = Toán tử '+' không tương thích với các loại toán hạng 'Vector2' và 'Vector2' Nguồn = DynamicLINQ Vị trí = 6
Làm cách nào để trình phân tích cú pháp 'thấy' quá tải của toán tử +
trên loại Vector2
?
EDIT: Tôi cũng gặp vấn đề tương tự với toán tử =
. Nhìn vào nguồn, tôi có thể thấy lý do tại sao, nó nhìn vào một giao diện đặc biệt liệt kê vô số các phương thức, đối với các loại đơn giản và nếu nó không thể tìm thấy nó, thì nó sẽ làm tăng ngoại lệ. Rắc rối là, loại của tôi (Vector2
) không có trong danh sách đó, vì vậy nó sẽ không bao giờ tìm thấy các phương pháp điều hành.
George, tôi đã hoàn nguyên vị trí của mình về việc bạn có nên tạo giao diện _any_ hoặc mở rộng từ một trong các giao diện nhất định hay không. Tôi nghĩ rằng nó sẽ an toàn hơn để mở rộng từ một trong các giao diện thay thế. Có thể hoặc không thể kiểm tra loại bổ sung (chẳng hạn như loại thực sự hỗ trợ bổ sung) trong tương lai hoặc không có điều gì. –
Điểm tốt, cảm ơn; tôi đã thay đổi mã của mình cho phù hợp. –