我创建了一个类,它根据传递给它的名称加载它的子类。该函数使用 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;
}