gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:13:53 25 4
gpt4 key购买 nike

假设我有一堂这样的课:

abstract class Foo {
String name bar = 'bar';
}

使用mirror,我们可以得到bar的值吗?

最佳答案

一般答案:

  • 如果您要扩展一个类并想要访问其字段/getter,则可以使用 super.field
  • 如果您要反射(reflection)类声明,则当前无法对任何主体进行内省(introspection),包括方法主体或初始值设定项。您必须使用分析器或 dart2js。
  • Dado...其工作原理很有趣。它尝试实例化抽象类,但实际上不再起作用。

既然您正在查看 Dado,那么让我更多地解释一下它是如何工作的,尽管这不是这个问题的一般答案。

首先,Dado 的方法过去和现在都是相当实验性的。我试图使用语言功能来要求模块的声明性定义,以便作者无法编写不支持代码生成的模块。 Dart 和镜像发生了一些变化,使得这种方法不太可行,或者至少使它需要更多的样板文件,所以我正在重新考虑整个事情。采用您在那里找到的任何技术,并增加一两份盐:)

对于没有看过示例或代码的人,在 Dado 中,您可以为模块定义声明一个抽象类。具有值的字段声明一个固定的单例值,类似于更传统的 DI 容器如何编写 bind(Foo).toValue(new Foo())

我(过去)获取值的方式是通过镜像实例化抽象类,然后简单地读取该字段。 dart:mirrors 更改为禁止实例化抽象类,因此这不再有效。这是不幸的,因为其他类型的绑定(bind)是用抽象方法声明的,并且这些绑定(bind)会在非抽象类中引起警告。

关于dart - 如何获取抽象类中字段的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com