我尝试动态创建一个类的新实例:
this.componentClass.newInstance(new Symbol(''), [this, el]).reflectee;
this.componentClass中反映的类称为ButtonComponent
,它是Component的子类。在对此运行测试时,出现错误:
Test failed: Caught No constructor 'ButtonComponent.' declared in class 'ButtonComponent'.
NoSuchMethodError : method not found: 'ButtonComponent.'
Receiver: Type: class 'ButtonComponent' Arguments: [...]
Component和ButtonComponent类中都有默认构造函数。这是代码,以确保我没有错过任何东西:
class Component {
Element element ;
Template template;
Component(this.template, this.element) {
this.element.replaceWith(new Element.html(template.html));
}
}
class ButtonComponent extends Component {
ButtonComponent(template, element) : super(template, element) {};
}
这里有什么问题吗?谢谢。
答案 0 :(得分:1)
我刚刚在1.0.0.3_r30187中进行了类似的测试,但我没有收到此错误。如果您不使用最后一个稳定版本的Dart,您应该更新您的版本。
这是我测试过的代码:
import 'dart:html';
import 'dart:mirrors';
class Component {
Element element ;
Component(this.element) {
this.element.children.add(new Element.html("<b>Dart rocks</b>"));
}
}
class ButtonComponent extends Component {
ButtonComponent(element) : super(element);
}
main() {
final a = reflectClass(ButtonComponent).newInstance(new Symbol(''),
[document.documentElement]).reflectee;
print(a); // display : Instance of 'ButtonComponent'
}