Trong khi Barry trả lời rõ ràng câu hỏi của bạn liên quan đến các thuộc tính trên các thành phần enum, tôi sẽ bị đâm vào một đề xuất khác. Từ ví dụ của bạn, bạn đang đặt trước mỗi phần tử enum với 'tod' như là truyền thống trong Delphi vì các phần tử enum có phạm vi toàn cục (ví dụ: nếu bạn có một định danh todABC trong phạm vi ngoài các phần tử endABC enum, bạn có thể nhận được một số hành vi kỳ lạ).
Bắt đầu từ D2007, chúng tôi đã giới thiệu khái niệm "enums enums", khi được bật, yêu cầu bạn phải đủ điều kiện phần tử enum với số nhận dạng của chính enum. Ví dụ:
{$SCOPEDENUMS ON}
type
TTypeOfData = (ABC,DEF,GHI);
Sẽ yêu cầu bạn tham chiếu đến phần tử ABC như TTypeOfData.ABC. Điều này cho phép bạn sử dụng các định danh phần tử enum không có tiền tố và không chạy nguy cơ có xung đột vì các phần tử được "phạm vi" để liệt kê. Bất kỳ enum nào được khai báo trong khi {$ SCOPEDENUMS} được kích hoạt sẽ hoạt động theo cách này.
Cho rằng, bây giờ bạn có thể sử dụng RTTI một cách an toàn để lấy tên phần tử enum thực tế theo định dạng bạn muốn.
Nguồn
2010-01-25 21:33:44
Giải thích tốt trên. Nhưng IMO trong trường hợp đó, họ phải gây ra cảnh báo "tính năng ngôn ngữ không được hỗ trợ", giống như việc sử dụng thuộc tính không hợp lệ khác. –