【问题标题】:Using reflection to inspect collections inside a class使用反射检查类中的集合
【发布时间】:2014-12-29 14:53:57
【问题描述】:

我的代码如下所示:

Zoo myZoo;

class Zoo {
  Park<Duck> ducks;
  Park<Lama> lamas;
}

class Park<E extends Animal> {
  ...
}

我需要从 Zoo 的 ClassMirror 中知道有多少个 Park 以及它们包含的 Animal 的类型。实际上我需要在这个例子中检索 Duck 和 Lama TypeMirrors。

到目前为止,我已经能够通过解析字符串将其打印出来,但我无法真正检索到类型。

【问题讨论】:

    标签: dart dart-mirrors


    【解决方案1】:

    你的问题对我来说并不完全清楚,但我想这就是你要找的

    void main() {
      ClassMirror cm = reflectClass(Zoo);
      cm.declarations.forEach((k, v) {
        if(v is VariableMirror) {
          if ((v as VariableMirror).type.typeArguments.where((t) => t.isSubtypeOf(reflectType(Animal))).length > 0) {
            print('$k, $v');
          }
        }
      });
    }
    

    【讨论】:

    • 太棒了,你拯救了我的一天!我不知道 ClassMirror typeArguments,这就是我要找的。谢谢:)
    猜你喜欢
    • 2011-07-25
    • 2011-04-12
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多