如果我没错,这段代码应该打印出来:
"dart.core.dynamic"
但是打印了以下内容:
"dynamic"
我的代码:
import 'dart:mirrors';
main() {
var mirror = reflectType(dynamic);
var symbol = mirror.qualifiedName;
print(symbol); // -> "dynamic"
}
答案 0 :(得分:1)
我认为“动态”是一个非常好的结果。
通常的限定名称在类型名称前面加上声明库的名称。 您期望它以“dart.core”为前缀,这是“dart:core”库的名称,但“动态”未在该库(https://api.dartlang.org/docs/channels/stable/latest/dart_core.html)中声明,因此这将是错误的前缀使用。
“动态”类型是未在任何库中声明的合成类型 - 没有“class”或“typedef”声明可以声明类型表现为“动态”的类型。它仅由规范指定,并在编译器和运行时系统内部实现。
在这种情况下,拥有没有前缀的限定名称非常有意义。这与“无效”相同。
答案 1 :(得分:0)
这是答案How do I get the qualified name from a Type instance, in Dart?
你忘记了
Symbol symbol = mirror.qualifiedName;
String qualifiedName = MirrorSystem.getName(symbol);