Tôi đã làm việc với Reflections và muốn nhận tất cả thuộc tính được khai báo cho thuộc tính. Có hai thuộc tính trong số PropertInfo
lớp là CustomAttributes
và Attributes
.Thuộc tính so với CustomAttributes trong PropertyInfo
Theo MSDN, họ được giải thích như sau:
Attributes:
Khách sạn này đại diện cho các thuộc tính liên quan đến một thành viên. Tất cả các thành viên có một tập hợp các thuộc tính được xác định liên quan đến loại thành viên cụ thể. Thuộc tính thuộc tính cho phép người dùng biết nếu thuộc tính này là thuộc tính mặc định, thuộc tính SpecialName và do đó, bật.
Lưu ý: Mẫu mã được cung cấp trong trang PropertyInfo.Attributes
thậm chí không hoạt động.
Tuỳ thuộc tính:
Một mảng có chứa tất cả các thuộc tính tùy chỉnh áp dụng cho thành viên này, hoặc một mảng với zero yếu tố nếu không có thuộc tính được định nghĩa.
Tuy nhiên, khi tôi chạy mã này cho họ, Attributes
không trả về sốtrả về Required
.
void Main()
{
var attributes = typeof(Myproperty).GetProperty("Caption").CustomAttributes;
//var attributes = typeof(Myproperty).GetProperty("Caption").Attributes;
attributes.Dump(); //Dump is a LinqPad method which dumps everything to the outpu window
}
public class Myproperty
{
private string caption = "Default caption";
[Required]
public string Caption
{
get{return caption;}
set {if(caption!=value) {caption = value;}
}
}
}
Về cơ bản, chúng có ý nghĩa hơi khác về từ "thuộc tính" tại đây. Có vẻ như bạn muốn CustomAttributes. –
Tôi đã tìm ra những gì tôi muốn là 'CustomAttributes' nhưng bạn có thể giải thích sự khác biệt là gì không? IMO có vẻ như nó không làm những gì tên của nó ngụ ý. – Tarik
Về cơ bản, hãy xem câu trả lời từ Hans. Chúng rất khác nhau. Nhìn vào MethodInfo.Attributes cho một ví dụ có thể có ý nghĩa hơn với bạn - nó giống như các công cụ sửa đổi có thể được áp dụng cho một thuộc tính/phương thức/v.v. –