Dart ClassMirror newInstance 方法说没有这样的构造函数

标签 dart dart-mirrors

我尝试动态创建一个类的新实例,如下所示:

this.componentClass.newInstance(new Symbol(''), [this, el]).reflectee;

this.componentClass 中反射(reflect)的类称为 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) {};

}

你知道这里出了什么问题吗?谢谢。

最佳答案

我刚刚在 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'
}

关于Dart ClassMirror newInstance 方法说没有这样的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20088720/

相关文章:

flutter - 你如何在运行时对 Flame (Flutter) 中 Sprite 的渲染顺序进行排序?

flutter - 为什么ListViewBuilder显示重复值?

class - 如何判断一个对象是否是类的实例

dart - Dart 反射(reflect)问题。 getField

dart - Flutter 中的首字下沉字母

dart - 为什么在使用自定义元素时会出现内部 Dartium 异常?

dart - 如何获取抽象类中字段的默认值

server - 获取Dart中的所有子类

dart - 使用Dart中的反射从ClassMirror获取 setter/getter 和/或属性?

dart - 在什么情况下,reflectClass(o.runtimeType) 会返回与reflect(o).type 不同的结果?