Tại sao Att Att.IsDefined () thiếu quá tải?


165

Lấy cảm hứng từ một câu hỏi SO. Lớp thuộc tính có một số tình trạng quá tải cho phương thức IsDefined () . Bao phủ là các thuộc tính được áp dụng cho hội, mô-đun, MemberInfo, ParameterInfo. Quá tải MemberInfo bao gồm PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.

Điều đó quan tâm đến hầu hết các mục tiêu AttributionT. Ngoại trừ một vấn đề lớn: không có quá tải cho Attribution.IsDefined (Loại, Loại) để bạn có thể kiểm tra xem một thuộc tính có được xác định trên một lớp không. Hoặc một cấu trúc, đại biểu hoặc enum cho vấn đề đó.

Không phải đây là vấn đề thực sự, Type.GetCustomAttribut () có thể khắc phục điều đó. Nhưng tất cả các loại BlahInfo cũng có điều này. Tôi tự hỏi ở sự thiếu đối xứng. Tôi không thể đặt ngón tay vào lý do tại sao điều này sẽ là vấn đề đối với Loại. Đoán về một vấn đề thừa kế không giải thích cho tôi. Có ValueType trong hỗn hợp có thể là một khách hàng tiềm năng, vẫn không có ý nghĩa. Tôi không mua "họ quên", họ không bao giờ làm thế.

Tại sao thiếu quá tải này?

Câu trả lời:


170

Có một System.Attribute.IsDefined(MemberInfo element, Type attributeType, bool inherit)System.Typexuất phát từSystem.Reflection.MemberInfo .

Một tập hợp, là bộ chứa cấp cao nhất của bất kỳ tập hợp .NET nào có một hoặc nhiều mô-đun. Mỗi mô-đun sau đó chứa các loại và loại có thể có các thành viên như thuộc tính, phương thức hoặc thậm chí các loại khác (loại lồng nhau). Đó là lý do System.Typexuất phát từ MemberInfođể mô hình đối tượng cho phép đối với các loại công việc như container tất cả mọi thứ thành viên, trong đó có các loại khác.


Quá tải cho ICustomAttributeProvidersẽ có rất nhiều ý nghĩa quá.
Ông Anderson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.