Подтвердить что ты не робот

Как получить доступ к аннотациям метаданных из класса?

У меня есть класс Дарт, который аннотируется метаданными:

class Awesome {
  final String msg;
  const Awesome(this.msg);

  String toString() => msg;
}

@Awesome('it works!')
class Cool {

}

Я хочу посмотреть, был ли аннотирован Cool, и если да, то с чем. Как это сделать?

4b9b3361

Ответ 1

Используйте библиотеку dart:mirrors для доступа к аннотациям метаданных.

import 'dart:mirrors';

class Awesome {
  final String msg;
  const Awesome(this.msg);

  String toString() => msg;
}

@Awesome('it works!')
class Cool {

}

void main() {
  ClassMirror classMirror = reflectClass(Cool);
  List<InstanceMirror> metadata = classMirror.metadata;
  var obj = metadata.first.reflectee;
  print(obj); // it works!
}

Чтобы узнать больше, прочитайте о методе ClassMirror # metadata.