Próbuję napisać właściwość, który używa rodzajowych:personelowi rodzajowych w Delphi
type TMyClass = class
protected
function GetCountBy<T: Class>: Integer;
public
property CountBy<T: Class>: Integer read GetCountBy<T>;
end;
ale nie kompilacji w deklaracji majątkowych z komunikatem „Property CountBy nie istnieje w klasie bazowej” i czerwone zawijas na otwarciu < nazwy właściwości.
Czy jest jakiś sposób, aby to osiągnąć?
Edit: Oto mój drugi przypadek użycia, który jest bardziej skomplikowane, ale bardziej realny świat:
property ItemsBy<T: Class>[Index: Integer]: T read GetItemsBy<T> write SetItemsBy<T>;
Funkcja filtruje zawartość listy, aby zwrócić przedmiot Index'th z określonej klasy.
Po prostu potrzebujesz TDictionary tutaj. Generics nie są odpowiednie dla tego problemu. –
-1. Byłoby to lepsze pytanie, gdyby był motywowany przez problem, który faktycznie skorzystałby z leków generycznych. Przykład "właściwości ogólnej" w pytaniu wcale nie potrzebuje generycznych. Może to być dobre pytanie dotyczące właściwej składni właściwości ogólnych (jeśli taka składnia istnieje), ale przykładowy problem, który można rozwiązać za pomocą takiej składni, tak naprawdę nie pokazuje potrzeby. –