Ceci est un jeu de réflexion.Flex/Parsley - Quirk de classe interne avec mode de compilation
Environnement pertinent: Application Flex, exécution de persil, qui est construit par ant.
classe Problème:
package com.foo.bar {
public class ProblemClass {
// constructor
public ProblemClass(enforcer:Enforcer) {}
public static function build():ProblemClass {
// Do some setup
return new ProblemClass(new Enforcer())
}
}
// internal private class
class Enforcer() {}
Ailleurs, dans une classe séparée (qui obtient défini dans un contexte Persil):
package com.foo.bar {
public class ProblemClassBuilder {
[Factory]
public function getProblem():ProblemClass {
return ProblemClass.build();
}
}
}
Voici le kicker: Quand je compile ce à partir d'une tâche de fourmi avec debug = "true", ça marche bien. Quand je compile avec debug = "false", le persil renvoie une erreur tout en construisant le contexte:
Erreur d'application [objet FactoryMethodDecorator]: Erreur # 1065: Variable Exécuteur n'est pas défini.
Aucun autre code ne change, sauf l'activation/désactivation du débogage dans la tâche ant de mxmlc.
Est-ce que quelqu'un a vu des problèmes similaires avec les classes internes & et de déboguer les modes de compilation?
J'ai été en mesure de résoudre le problème (en supprimant la classe interne), mais je ne comprends pas pourquoi cela n'a pas fonctionné en premier lieu.
Désolé, mais c'est incorrect. Il n'y a pas de modificateur de classe "private" dans actionscript. (http://bit.ly/9hvf5h) En outre, vous pouvez déclarer plus d'une classe dans un fichier actionscript, mais les classes suivantes sont étendues à la portée par défaut de la classe initiale - c'est-à-dire, uniquement accessible à la première classe . L'ajout interne à cette déclaration de classe n'a aucun effet. Il s'agit d'un modèle commun pour l'implémentation de classes Singleton/Private dans AS. –