【问题标题】:Instantiating a class by String name in Dart在 Dart 中通过字符串名称实例化一个类
【发布时间】:2020-12-23 22:03:53
【问题描述】:

我试图调用一个我只知道名称的类的方法作为字符串。因此,现在我需要该类的 ClassMirror,它允许我实例化一个实例。但是,似乎只能通过使用reflectClass(Type) 输入类型或将该类的现有实例传递给reflect(dynamic) 来创建ClassMirror。因此,如果我只有一个字符串,这些都无济于事。

在 Java 中,您可以通过调用 Class.forName(String) 轻松完成此操作。然后你会得到一个 Constructor 实例,使其可访问并调用它。

有谁知道这在飞镖中是否可行?奇怪的是,一旦有了 ClassMirror,您就可以通过传递符号来访问字段和方法,这些符号可以由字符串创建。

【问题讨论】:

    标签: dart reflection mirror


    【解决方案1】:

    您可以将特定的字符串列表映射到特定的闭包列表以创建具有特定参数的新对象。

    但是如果不使用 dart:mirrors 就无法获得反射,该功能已被弃用,并且还会对 tree shaking 产生负面影响以减小有效负载大小。

    一般情况下,我们会邀请您查看 package:reflectable,以使用源到源构建器来实现您想要从 dart:mirrors 中获得的大部分功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      相关资源
      最近更新 更多