Đối với một số lý do tuyên bố này đang làm việc tốt:Sử dụng một loại bí danh trong một tuyên bố LINQ đang tạo ra một lỗi
vms.Where(vm => vm.MessageType == ValidationMessage.EnumValidationMessageType.Warning)
Nhưng nếu ở phía trên cùng của lớp, tôi xác định một bí danh (để tiết kiệm không gian):
using MsgType = ValidationMessage.EnumValidationMessageType;
Sau đó, các vòng dây mã:
vms.Where(vm => vm.MessageType == MsgType.Warning)
Cung cấp cho tôi một lỗi:
"Ủy quyền 'System.Func<ValidationMessage, int, bool>
' không dùng 1 đối số". Điều kỳ quặc về điều đó là không phải là Đại biểu mà tôi đang sử dụng. Tôi đang sử dụng quá tải 'System.Func<ValidationMessage, bool>
' của .Where<>()
- giống như khi tôi không sử dụng bí danh.
Lưu ý rằng ở mọi nơi khác bí danh đang được sử dụng hoạt động tốt, nó chỉ nằm trong các đại biểu LINQ mà nó phá vỡ. Tại sao chuyện này đang xảy ra?
Ahahaha. Nếu tôi cố gắng làm việc xung quanh nó bằng cách cho nó một arg cho đối số thứ hai (index): 'vms.Where ((vm, i) => vm.MessageType == MsgType.Warning)', nó sau đó lật trở lại và nói " Delegate 'System.Func' không lấy 2 đối số "! Thật là một câu chuyện hài hước. –
Alain
Bạn có gặp lỗi tương tự nếu bạn cố biên dịch không? Hoặc chỉ phát hiện lỗi VS cho thấy chúng? – nemesv
Điểm thực sự tốt. Mã của tôi không phải là ở một trạng thái biên dịch vì vậy tôi đã không thử nó, nhưng tôi nhận xét ra mã chưa hoàn thành và cố gắng chạy và lỗi hợp lý hơn nhiều: nó không thể tìm thấy không gian tên cho khai báo bí danh kiểu của tôi. Giải pháp là đánh vần đầy đủ đường dẫn tới kiểu: 'using MsgType = WPF.Utilities.ObjectModel.ValidationMessage.EnumValidationMessageType;' Sau đó mọi thứ tự sửa. – Alain