Flex / Persil - bizarrerie interne de la classe avec le mode de compilation
-
01-10-2019 - |
Question
Ceci est un jeu de réflexion.
Environnement pertinent. Application Flex, le persil en cours d'exécution, ce qui se construit par la fourmi
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() {}
Par 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 », cela fonctionne très bien. Quand je compile avec debug =, le persil « false » renvoie une erreur tout en construisant le contexte:
Erreur d'application [object FactoryMethodDecorator]: Erreur # 1065: Exécuteur variable n'est pas défini.
Aucun autre changement de code, à l'exception tournant debug on / off dans la tâche de fourmi mxmlc.
Quelqu'un at-il vu des problèmes similaires avec les classes internes et ant debug compilation modes?
J'ai été en mesure de résoudre le problème, (en supprimant la classe interne), mais ne comprend pas pourquoi cela n'a pas fonctionné en premier lieu.
La solution
Sons comme un bug dans le compilateur ... Je bugs.adobe.com
Autres conseils
vous ne sont autorisés une définition de classe par actionscript fichier, sinon vous devez utiliser le mot-clé internal
il devrait donc être private internal class Enforcer()