dart - 如何在 Dart 的类中动态创建方法或 setter?

标签 dart

是否可以从此类内部或外部向现有类动态添加实例方法或 setter?

最佳答案

不,您不能向类(class)添加真正的成员

我说真正的成员是因为你可以用noSuchMethod()模拟这样的特征.这里有一个例子:

@proxy
class A {
  final dynamicMethods = <Symbol, Function>{};

  noSuchMethod(Invocation i) {
    if (i.isMethod && dynamicMethods.containsKey(i.memberName)) {
      return Function.apply(dynamicMethods[i.memberName],
          i.positionalArguments, i.namedArguments);
    }
    return super.noSuchMethod(i);
  }
}

main() {
  final a = new A();
  a.dynamicMethods[#sayHello] = () => print('hello');
  a.sayHello();
}

在未来这也许是可能的。请参阅 the article on Mirrors 中的这段摘录:

We’d like to support more powerful reflective features in the future. These would include mirror builders, designed to allow programs to extend and modify themselves, and a mirror-based debugging API as well.

关于dart - 如何在 Dart 的类中动态创建方法或 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20237128/

相关文章:

flutter - paint()方法中的Size属性不同于CustomPainter中指定的大小

list - 将项目删除并再次添加到列表中时保持列表中的位置

dart - 在 dart 中解析 X509 证书并提取通用名称

dart - 路由:无需重新加载 View 即可获得有关参数更新的通知

firebase - 无法从Firestore读取数据

flutter - flutter :父部件重建后,子部件无法重建吗?

Java DatagramSocket、Dart ClientSocket

flutter - 带圆角的动画容器

dart - Dart 是为单页应用程序设计的吗?

javascript - 跨语言网络 worker ?