多级符号的用例有哪些?

时间:2016-11-01 16:42:09

标签: dart

词汇表:我的意思是多级符号就像#Dummy.bar而不是像#bar这样的单级。不知道什么是更好的名字,对不起。

符号非常漂亮。我能做到:

class Foo {
 static String hello() => "Said hello!";
}

ClassMirror clMir = reflectType(Foo) as ClassMirror();
print(clMir.invoke(#hello, []));

打印说你好!。太好了!

但是一个人不能这样做:

class Bar{
 static final Bar bar = new Bar();
}

ClassMirror clMir = reflectType(Bar) as ClassMirror();
print(clMir.invoke(#bar.hello, []));

这会失败。

此外,我还没有找到一个可以获得多级符号反射的地方,例如reflectSymbol(#Dummy.bar),并获得InstanceMirror for bar或类似内容。

那么多级符号有用例吗?

1 个答案:

答案 0 :(得分:1)

有不同的用例。 它主要代表库名(library foo.bar.baz;)。镜像系统使用它(例如,参见https://api.dartlang.org/stable/1.20.1/dart-mirrors/MirrorSystem/findLibrary.html)。

其次,镜像系统有时将其用作library.name.ClassName.memberName之类的“限定名称”来表示确切的类或库成员(https://api.dartlang.org/stable/1.20.1/dart-mirrors/DeclarationMirror/qualifiedName.html)。

在镜像系统之外它并没有那么有用。