sto cercando di scrivere una proprietà che utilizza farmaci generici:struttura utilizzando Generics a Delfi
type TMyClass = class
protected
function GetCountBy<T: Class>: Integer;
public
property CountBy<T: Class>: Integer read GetCountBy<T>;
end;
ma la compilazione fallisce sulla dichiarazione di proprietà con il messaggio 'Proprietà CountBy non esiste nella classe base', e il filo rosso sull'apertura < del nome della proprietà.
Esiste un modo per raggiungere questo obiettivo?
Edit: Ecco l'altro mio caso d'uso, che è più complessa ma più del mondo reale:
property ItemsBy<T: Class>[Index: Integer]: T read GetItemsBy<T> write SetItemsBy<T>;
La funzione filtra i contenuti di un elenco per restituire l'articolo Index'th della classe specificata.
Hai semplicemente bisogno di TDictionary qui. I generici non sono adatti a questo problema. –
-1. Questa sarebbe una domanda migliore se fosse motivata da un problema che potrebbe effettivamente beneficiare dei farmaci generici. L'esempio "proprietà generica" nella domanda non ha bisogno di generici. Questo potrebbe essere una bella domanda che chiede la sintassi corretta per le proprietà generiche (se anche tale sintassi esiste), ma il problema di esempio da risolvere con tale sintassi non dimostra realmente la necessità. –