Tôi đang cố gắng để viết một tài sản trong đó sử dụng Generics:tài sản sử dụng Generics trong Delphi
type TMyClass = class
protected
function GetCountBy<T: Class>: Integer;
public
property CountBy<T: Class>: Integer read GetCountBy<T>;
end;
nhưng biên dịch không thành công trên tờ khai tài sản với thông điệp 'tài sản CountBy không tồn tại trong lớp cơ sở', và tiếng leng keng màu đỏ khi mở < của tên thuộc tính.
Có cách nào để đạt được điều này không?
Edit: Đây là trường hợp của tôi khác sử dụng, đó là phức tạp hơn nhưng hơn thế giới thực:
property ItemsBy<T: Class>[Index: Integer]: T read GetItemsBy<T> write SetItemsBy<T>;
Chức năng lọc nội dung của một danh sách để trả lại món Index'th của lớp được chỉ định.
Bạn chỉ cần TDictionary tại đây. Generics không phù hợp với vấn đề này. –
-1. Đây sẽ là một câu hỏi tốt hơn nếu nó được thúc đẩy bởi một vấn đề mà thực sự sẽ được hưởng lợi từ Generics. Ví dụ "thuộc tính chung" trong câu hỏi không cần generics chút nào. Điều này có khả năng là một câu hỏi hay về việc hỏi cú pháp đúng cho các thuộc tính chung (nếu cú pháp đó tồn tại), nhưng vấn đề ví dụ cần được giải quyết bằng cú pháp như vậy không thực sự chứng minh sự cần thiết. –