所以,我查看了镜子,它们可能是一个选择,但考虑到它们的异步特性,它们可能真的很难使用,或者从长远来看是不可行的。由于它们目前不受支持(只是一个玩物),因此无论如何它们目前都不是真正可行的。
问题:给定一系列字符串,例如。[ "Foo", "Bar" ]
基类Application
和Widget
inlibrary corelib;
以及每个字符串的对应类FooWidget
in BarWidget
,这是目前将字符串转换为对应类的实例的library applibrary;
最优雅的方法,适用于 dart2js。Application
为了清楚起见,等效的 PHP 伪示例,
<?php # example
namespace corelib;
class Widget {
function name() {
return \get_called_class();
}
}
class Application {
static function resolve($name, $library) {
$class = $library.'\\'.$name.'Widget';
return new $class;
}
}
namespace applibrary;
class FooWidget extends \corelib\Widget {
// ...
}
class BarWidget extends \corelib\Widget {
// ...
}
$foowidget = \corelib\Application::resolve('Foo', 'applibrary');
$barwidget = \corelib\Application::resolve('Bar', 'applibrary');
echo "{$foowidget->name()} <br> {$barwidget->name()}";
输出
applibrary\FooWidget
applibrary\BarWidget