отражающая упаковка для флаттера / дротика: не отражает членов базового класса или суперкласса - PullRequest
0 голосов
/ 09 апреля 2020
import 'package:reflection_test2/common/reflect/Reflector.dart';

@reflector
class Base
{
  String s1;
}

@reflector
class Sub extends Base
{
  String s2;
}

ClassMirror classMirror = reflector.reflectType(Sub);

=> Здесь classMirror отражает только s2, не отражая элемент базового / суперкласса s1.

1 Ответ

0 голосов
/ 10 апреля 2020

Не уверен, что именно нужно делать с полем s1, но один из способов доступа к нему указан ниже. Надеюсь, это поможет.

class Reflector extends Reflectable {
  // config reflect capabilities
  const Reflector() : super(invokingCapability, declarationsCapability, typeRelationsCapability);
}
ClassMirror classMirror = reflector.reflectType(Sub);
// print all instance members of the superclass (e.g. toString, s1, etc.)
classMirror.superclass.instanceMembers.forEach((key, value) => print(value.simpleName));
...