Ich habe zwei Fragen (von denen mindestens eine RTTI in D2010 und dynamische Instanzen betrifft)
TRTTIConstructor.Invoke
. In einem benachbarten Aufzählungspunkt findet man "Instanzen dynamisch erstellen, ohne virtuelle Konstruktoren und Metaklassen zu benötigen". Das scheint ein großartiges Feature (und genau das, was ich brauche, übrigens)! Wenn ich jedoch in die D2010-Dokumente (ms-help: //embarcadero.rs2010/vcl/Rtti.html) schaue, kann ich sie nicht finden. Wurde es widerrufen? Ich denke, dass Funktionalität in TRTtiMethod aufgenommen wurde. Es verfügt über die Eigenschaften IsConstructor, IsDestructor und IsClassMethod, so dass es sowohl für "spezielle" als auch für normale Methoden verwendet werden kann.
Wie für Frage 2, versuchen Sie etwas wie folgt:
%Vor% Dies findet den höchsten Konstruktor namens Create
, der keine Parameter akzeptiert. Sie können es ändern, um nach anderen Konstruktoren mit anderen Signaturen zu suchen, wenn Sie wissen, wonach Sie suchen. Rufen Sie dann Invoke
für das Ergebnis auf.
Obwohl Sie .GetMethod () aufrufen können, um den Konstruktor zu erhalten, können Sie auch Folgendes tun, um Instanzen von Objekten ohne Parameter für den Konstruktor zu konstruieren.
%Vor%Wenn Sie den Basistyp kennen, den Sie eingeben können, übergeben Sie die Klasse, um die Parameter bei Bedarf zu übergeben. Hier ist ein Beispiel für das Erstellen einer Komponente
result := TComponentClass(aType.AsInstance.MetaClassType).Create(OwnerValue);
Tags und Links delphi rtti delphi-2010