Per se, esto no es posible. Y eso no tiene nada que ver con ActionScript. En la mayoría de los otros idiomas, tiene el mismo problema, ya que en el lado izquierdo tiene un objeto anónimo, si el lenguaje admite algo así, o un hash. De todos modos. Existen diferentes soluciones, este sería uno, que puede manejar un par de cosas:
package {
public class ObjectUtils {
public static function createInstance(constructor:Class):* {
var ret:*;
switch (describeType(to).factory.constructor.parameter.(@optional == "false").length()) {
case 0: ret = new to(); break;
case 1: ret = new to(null); break;
case 2: ret = new to(null, null); break;
case 3: ret = new to(null, null, null); break;
case 4: ret = new to(null, null, null, null); break;
case 5: ret = new to(null, null, null, null, null); break;
case 6: ret = new to(null, null, null, null, null, null); break;
case 7: ret = new to(null, null, null, null, null, null, null); break;
case 8: ret = new to(null, null, null, null, null, null, null, null); break;
case 9: ret = new to(null, null, null, null, null, null, null, null, null); break;
default: throw new Error("no implementation for instantiating classes that require more than 9 constructor arguments");
}
return ret;
}
public static function castAnonymous(obj:Object, to:Class):* {
var ret = createInstance(obj);
for (var name:String in obj)
try {
ret[name] = obj[name];
}
catch (e:Error) {
throw new Error("error trying to assign value " + obj[name] + " to property " + name + " on " + ret + ". reason: " + e);
}
return ret;
}
}
}
restricciones:
- fallarán si el pánico de clase, si es correo basura con nulos sobre la construcción o el constructor necesita más de 9 argumentos
- no, y también puede no recursivos, por lo que simplemente puede asignar objetos anónimos o matrices de las propiedades de la instancia devuelta
creo que sirve de todos modos;)
greetz
back2dos
Se puede añadir "en ActionScript" para el título? –
no es específico de actionscript, simplemente lo uso en actionscript. –