2009-05-27 41 views
9

Tôi cần tìm loại thuộc tính mà thuộc tính tùy chỉnh được áp dụng cho từ trong thuộc tính tùy chỉnh.Làm cách nào để nhận thuộc tính thuộc thuộc tính tùy chỉnh?

Ví dụ:

[MyAttribute] 
string MyProperty{get;set;} 

Với trường hợp của MyAttribute, làm thế nào tôi có thể có được một mô tả Loại cho myProperty?

Nói cách khác, tôi đang tìm kiếm các đối diện của System.Type.GetCustomAttributes()

+2

Bạn có thể nên nói những gì bạn đang cố gắng làm, bởi vì những gì bạn đang yêu cầu là không thể. –

Trả lời

16

Thuộc tính không biết gì về đối tượng được trang trí với nó. Nhưng bạn có thể tiêm thông tin này vào thời điểm bạn chiếm lại thuộc tính.
Tại một số thời điểm bạn phải truy xuất thuộc tính bằng cách sử dụng mã tương tự như sau.

PropertyInfo propertyInfo = typeof(MyType).GetProperty("MyProperty"); 

Object[] attribute = propertyInfo.GetCustomAttributes(typeof(MyAttribute), true); 

if (attribute.Length > 0) 
{ 
    MyAttribute myAttribute = (MyAttribute) attributes[0]; 

    // Inject the type of the property. 
    myAttribute.PropertyType = propertyInfo.PropertyType; 

    // Or inject the complete property info. 
    myAttribute.PropertyInfo = propertyInfo; 
} 
+1

Nhãn hiệu đầy đủ để đọc tâm trí :-) –

+0

Tôi cần điều này cho vấn đề của mình và tôi tìm thấy [một giải pháp khác tại đây] (https://stackoverflow.com/questions/4879521/how-to-create-a-custom-attribute-in -c-sharp/44595783 # answer-4879579). Tôi đã giải thích về điều này và đăng một phản ứng để truy cập vào một thuộc tính tùy chỉnh trên một thuộc tính và không phải là một lớp, quá. Cảm ơn bạn bằng cách này! – Hopper

4

Thuộc tính tùy chỉnh không biết gì về các yếu tố do vì vậy tôi không nghĩ rằng những gì bạn muốn là có thể làm được, trừ khi bạn liệt kê tất cả các loại trong hệ thống của bạn và kiểm tra xem chúng có chứa thuộc tính đó không.

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