Sử dụng AutoMapper, tôi nhấn một nơi mà một cuộc tranh luận tên sẽ đã cho lắp rất độc đáo:Tại sao cây biểu thức không thể chứa thông số đối số được đặt tên?
.ForMember(s => s.MyProperty, opt => opt.MapFrom(s => BuildMyProperty(s, isAdvanced: false)))
Nhưng trình biên dịch mắng tôi:
Một cây biểu hiện có thể không chứa một đặc điểm kỹ thuật lập luận tên
Vì vậy, tôi đã phải trở lại:
.ForMember(s => s.MyProperty, opt => opt.MapFrom(s => BuildMyProperty(s, false)))
Có ai biết tại sao trình biên dịch không cho phép các đối số có tên trong tình huống này không?
Thông báo lỗi này tôi cảm thấy thực sự nên được ghi lại cho ảnh hưởng này. Nói cách khác, tìm kiếm msdn cho chuỗi thông báo lỗi chính xác sẽ cung cấp cho chúng tôi việc làm rõ này. http://social.msdn.microsoft.com/Search/en-US?query=%22An%20expression%20tree%20may%20not%20contain%20a%20named%20argument%20specification%22&ac=8 – payo
Điều này thật tuyệt vời - cảm ơn Eric. Tôi chưa bao giờ thực sự xem xét sự khác biệt giữa 'Biểu thức <...>' và 'Func <...>' cho đến bây giờ. Khi bạn nói rằng (1) sẽ là tốn kém, mặc dù, điều này có nghĩa là về chi phí phát triển hoặc rằng nó sẽ là tốn kém tính toán? –
@BrandonLinton: Sẽ tốn kém để phát triển, kiểm tra, ghi chép và duy trì, đặc biệt khi so sánh với lợi ích rất nhỏ mà nó dành cho nó. Chúng tôi có thể đã chọn để hỗ trợ nó ngay từ đầu - sau khi tất cả, VB đã luôn luôn có tên là đối số cho các cuộc gọi phương pháp - nhưng chúng tôi đã chọn không. –