Я создал класс, который загружает его подклассы на основе переданного ему имени. Функция использует getDefinitionByName, получает тип класса, создает его экземпляр и возвращает его, если класс является подтипом класса, которому принадлежит этот метод. Все подтипы - это mxml-файлы, расширяющие базовый класс, чтобы упростить создание экземпляров элементов управления.
Однако, в случае, когда я передаю ему полное имя, оно работает в моих модульных тестах, но завершается неудачно, когда я выполняю его в контексте моего приложения. Есть ли в getDefinitionByName значение, которое заставляет его вести себя по-разному в разных контекстах выполнения? Существует ли более простой способ загрузки классов по их полному имени?
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;
}