Delphi 2010: Was auch immer mit TRTTIConstructor passiert ist?

8

Ich habe zwei Fragen (von denen mindestens eine RTTI in D2010 und dynamische Instanzen betrifft)

  1. Ich habe gelesen, was wie Folien für einen Konferenzvortrag von Barry Kelly aussieht, und gefunden auf p. 13 etwas, das wirklich interessant aussieht: 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?
  2. Was ist die minimale Art, eine Instanz einer Klasse zu erstellen, vorausgesetzt, der Klassenname wird in einer Zeichenfolge gespeichert?
conciliator 23.03.2010, 14:11
quelle

2 Antworten

10

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.

    
Mason Wheeler 23.03.2010, 14:19
quelle
2

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);

    
Robert Love 24.03.2010 04:39
quelle

Tags und Links