2010-09-08 11 views
6

Nehmen wir an, ich erhalte den Namen einer Klasse, die ich als String gemacht habe. Wie kann ich die Klasse mit dem in dieser Zeichenfolge enthaltenen Namen instantiieren? Ich weiß, dass es von einer bestimmten Elternklasse abgeleitet wird, aber die tatsächliche Klasse wird variieren.Haxe - Erstellen einer Instanz einer Klasse aus einem String-Namen

Antwort

15
var instance : MyClass = Type.createInstance(Type.resolveClass("path.to.MyClass"), []); 

einige Anmerkungen:

  • resolveClass() nimmt den vollständigen Pfad (Pakete enthalten) des classe müssen Sie
  • createInstance() als zweites Argument nimmt ein Array von Werten, die an den Konstruktor angewendet werden. Diese Werte müssen genau sein und müssen auch dann übergeben werden, wenn sie optional sind (Nullen sind in diesem Fall gut).
+0

Ich sehe nicht "Type.createInstance" in HaXe 3.0 auf der Suche nach einer Alternative jetzt. – FlavorScape

+0

Genau hier: http://api.haxe.org/Type.html#createInstance –

+0

Hehe ja versehentlich importiert automatisch "haxe.macros.type", die offensichtlich diese Methode nicht hat. – FlavorScape