Das hat doch nichts damit zu tun was er will oder braucht
Womit denn sonst?
Er WILL das vllt. nicht. Aber prinzipiell ist der Sinn einer Ableitung eine bestehende Klasse zu ERWEITERN. Das ist aber aus folgenden Gründen NICHT möglich:
Zitat:
Du kannst keine Methoden überschreiben, du weißt nicht welche Methoden/Properties/Variablen dir zur Verfügung stehen.. Du weißt gar nichts. Wie willst du denn auf dieser Grundlage eine Klasse ableiten/implementieren?
D.h. es wird voraussichtlich niemals einen Compiler geben, der sowas zulässt.
Es macht keinen Unterschied ob er es will/braucht, wenn es einfach nicht geht.
Der Ansatz an sich macht (
OOP-technisch) keinen Sinn.
Sinnvoll ist der Ansatz schon, ob's jetzt
OOP oder sonstwas für ein Paradigma ist. Statt z.B. eine
TThreadedObject<TStringList>
zu nutzen könnte man natürlich auch eine
TThreadedStringList = class(TStringList)
schreiben. Deren Implementation wäre aber bis auf den Namen der Basisklasse identisch mit TThreadedBlubb, TThreadedBlah und TThreadedSchlock. Das schreit doch nach Generics.
Die Grundidee ist gut. Der Ansatz das auf diese Weise mit Generics zu lösen ist schlecht, nicht machbar und
OOP-technischer Schwachsinn.
Sowas wie TThreadedObject<TStringList> ist ja durchaus machbar und gut!
TThreadedBlubb, TThreadedBlah und TThreadedSchlock wäre natürlich noch ein Stück schöner, aber das schreit absolut nicht nach Generics. Für sowas sind und waren Generics nicht gedacht und es ist letztendlich einfach nicht machbar.
Für sowas sind Class-Helper gedacht.
Die waren dafür gedacht, dass man Delphis TObject in .net reinhämmern kann, sonst für nix.
Und im konkreten Fall bringen sie AFAIK eh nix, weil der OP ja Felder zur Basisklasse hinzufügen will.
Aha..
Class-Helper gehen natürlich nur wenn er keine Felder hinzufügen muss. Die Dinger sind aber in manchen Situationen durchaus nützlich.
Wenns für ihn mit Class-Helpern nicht geht, dann bleibt ihm nur die TThreadedObject<TStringList> Variante oder er muss von jeder Klasse in der er Critical-Sections einbauen will ableiten.