Thuộc tính là siêu dữ liệu. Thông thường, bạn sẽ muốn trang trí một thành viên hoặc loại với một thuộc tính để theo dõi một số thông tin về nó.
Ví dụ, DescriptionAttribute được sử dụng bởi PropertyGrid nhãn mô tả của một tài sản:
[Description("This is my property")]
public int MyProperty { get; set; }
Hầu hết thời gian, có nhiều hơn một mô tả sẽ không có ý nghĩa.
Tuy nhiên, có thể một thuộc tính cụ thể có ý nghĩa khi sử dụng nhiều lần. Trong trường hợp đó, bạn muốn đặt Thuộc tính để cho phép nhiều phiên bản của chính nó được gắn thẻ cho cùng một thuộc tính.
(Không phải tôi muốn làm điều này, nhưng ...) Giả sử bạn đã tạo thuộc tính tùy chỉnh để theo dõi những thay đổi lớn đối với một lớp học. Bạn có thể muốn liệt kê danh sách này cho mọi thay đổi lớn:
[Changes(Version=1.1, Change="Added Foo Feature")]
[Changes(Version=2.0, Change="Added Bar Feature")]
public class MyClass
{
// ...
Nguồn
2010-01-07 01:48:08
Để xây dựng trên ví dụ Mô tả của bạn và tránh ví dụ về Thay đổi "Tôi sẽ không làm điều này", hãy xem xét thuộc tính LocalisedDescriptionAttribute, có cả ngôn ngữ và mô tả. Điều này có thể được áp dụng cho các miền địa phương khác nhau: '[LocalisedDescription (" en-NZ "," sweet as ")] [LocalisedDescription (" en-GB "," jolly good ")]'. – itowlson
Tốt hơn nhiều từ sau đó trả lời của tôi :) –
@ itowlson: Vâng, mặc dù, một lần nữa, tôi có thể sử dụng các tùy chọn nội địa hóa tiêu chuẩn ... Đó sẽ là một ví dụ tốt, mặc dù. –