【发布时间】:2013-02-05 10:04:26
【问题描述】:
所以,我查看了镜子,它们可能是一种选择,但考虑到它们的异步特性,它们可能真的很难使用,或者从长远来看是不可行的。由于它们目前不受支持(只是一个玩物),因此无论如何它们目前都不可行。
问题:给定一系列字符串,例如。 [ "Foo", "Bar" ]library corelib; 中的基类Application 和Widget 以及library applibrary; 中每个字符串FooWidget、BarWidget 的对应类,目前最优雅的获取Application 的方法是将字符串转换为相应类的实例,适用于 dart2js。
为了清楚起见,等效的 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
【问题讨论】:
标签: dart dart-mirrors