2012-08-29 26 views
10

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?

+0

Tên thành viên có chứa tên loại làm tiền tố không? – CodesInChaos

+0

@CodesInChaos nó không giống như nó. –

+0

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

Trả lời

1

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.

Các vấn đề liên quan