Generics.Defaults gibt es auch schon in XE (vermutlich bereits ab 2009, aber das habe ich nicht installiert).
Ja, gibt es schon in 2009!
Die Lösung von jaenicke mit einer generischen TList<T> ist das auf jeden Fall besser als eine TObjectList.
Für deine Zwecke wäre sogar ein generisches TDictionary besser, da du ja irgendwie auf die Objekte per Namen zugreifen willst (siehe TListData.fName).
Das ständige Rumgecaste mit unlesbaren Code (
TMyInteger(TMyDoSomething(fList[i].fMy]).fAValue).SetValue(2);
)
führt nur zu Problemen und in drei Monaten verstehst du es selber nicht mehr.
Die Referenzzählung selber verursacht die Schutzverletzung nicht, sondern der fehlerhafte Umgang mit Interfaceobjekten.
Kleiner Tipp:
Es ist möglich in Interfaces mit propertys zu arbeiten.
Find ich angenehmer beim Programmieren:
Delphi-Quellcode:
IInteger=Interface(IValue)
function GetValue: Integer;
procedure SetValue(const AValue: Integer);
property Value : interger
read GetValue
write SetValue;
end;