2010-08-26 6 views
0

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.

Répondre

-2

vous n'êtes autorisé une définition de classe par fichier actionscript, sinon vous devez utiliser le mot-clé internal il devrait donc être private internal class Enforcer()

+0

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. –

Questions connexes