J'ai créé une classe qui charge ses sous-classes en fonction d'un nom qui lui est passé. La fonction utilise getDefinitionByName, récupère le type de classe et l'instancie, et le renvoie si la classe est un sous-type de la classe qui possède cette méthode. Les sous-types sont tous des fichiers mxml qui étendent la classe de base, afin de simplifier l'instanciation des contrôles.Comportement étrange de getDefinitionByName
Cependant, dans le cas où je le passe un nom complet, il fonctionne dans mes tests unitaires mais échoue quand je l'exécute dans le contexte de mon application. Y a-t-il un getcha dans getDefinitionByName qui le fait se comporter différemment dans différents contextes d'exécution? Existe-t-il un moyen plus simple de charger des classes par leur nom qualifié?
static public function loadDisplay(className:String, extendedClassName:String = null):FeatureDisplay
{
try
{
trace("Loading", className);
var cls:Class = getDefinitionByName(className) as Class;
var display:FeatureDisplay = new cls() as FeatureDisplay;
if(display)
{
return display;
}
else
{
trace(className, "is not a subclass of FeatureDisplay");
return null;
}
}
catch(error:Error)
{
trace("Error loading", className);
trace("Error:", error.message);
}
return null;
}
Il semble que vous l'ayez obtenu - les tests unitaires référencent explicitement le type pour s'assurer que le bon a été produit, et le code de l'application n'a pas fait. –