在Dart中通过字符串名称实例化类



我正在尝试调用一个类的方法,我只知道它的名称是String。因此,现在我需要该类的ClassMirror,它允许我实例化一个实例。但是,创建ClassMirrors似乎只能通过使用reflectClass(Type)输入类型或将该类的现有实例传递到reflect(dynamic)来实现。所以如果我只有一个字符串,这些就没有帮助。

在Java中,通过调用Class.forName(String),您可以很容易地做到这一点。然后,您将获得一个Constructor实例,使其可访问并调用它。

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

您可以放置一个特定的字符串列表,以映射到一个特定列表的闭包,从而创建一个具有特定参数的新对象。

但是,如果不使用dart:mirrors,就无法获得反射,这一点正在被弃用,而且也对降低有效载荷大小的树抖动产生了负面影响。

一般来说,您会被邀请查看该包:可反射以实现您想要的大部分内容:镜像,使用源代码到源代码构建器。

最新更新