Với .NET 4.5, đội CLR thêm:Tại sao không có CallerTypeNameAttribute trong .NET 4.5?
Tại sao không phải là một gia tăng đối với loại người gọi?
Với .NET 4.5, đội CLR thêm:Tại sao không có CallerTypeNameAttribute trong .NET 4.5?
Tại sao không phải là một gia tăng đối với loại người gọi?
Rất khó để một người nào đó bên ngoài nhóm thiết kế trả lời nhưng tôi sẽ nói rằng không có trường hợp sử dụng mạnh cho CallerTypeNameAttribute
.
Thuộc tính tệp và dòng cung cấp cho bạn thông tin mở rộng để ghi lại các thường trình sẽ không thể đạt được. Tên thành viên cho phép ghi nhật ký và đơn giản hóa việc triển khai INotifyPropertyChanged
trong khi cũng cho phép tái cấu trúc tên an toàn mà không cần phải tìm kiếm chuỗi.
Kiểu người gọi có thể đã được chuyển đến một phương thức đã cho bằng cách sử dụng typeof(CurrentType).Name
để có thể không xứng đáng với thuộc tính bổ sung. Bạn có thể nói rằng tên thành viên người gọi cũng có thể thu được bằng cách sử dụng MethodBase.GetCurrentMethod
nhưng điều đó có lẽ luôn luôn buộc phản ánh và typeof
có thể được tối ưu hóa để bạn đã có được lợi ích của việc tái cấu trúc an toàn và tác động ít hơn đến hiệu suất.
Nhược điểm duy nhất của việc sử dụng typeof
thay vì thuộc tính có thể là cách tiếp cận thuộc tính sẽ không bị ảnh hưởng bởi sự che khuất.
Tên thành viên có chứa tên loại làm tiền tố không? – CodesInChaos
@CodesInChaos nó không giống như nó. –
Phản hồi tiêu chuẩn cho "Tại sao X không có Y?" là "Tại sao X nên có Y?" Các trường hợp sử dụng thực tế cho ba thuộc tính mà bạn liệt kê đã được xem xét. Tôi tò mò, trường hợp sử dụng của bạn cho kiểu người gọi là gì? – hvd