Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.9k views
in Technique[技术] by (71.8m points)

dart - How do I access metadata annotations from a class?

I have a Dart class that is annotated with metadata:

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

  String toString() => msg;
}

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

}

I want to see if Cool was annotated, and if so, with what. How do I do that?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Use the dart:mirrors library to access metadata annotations.

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!
}

To learn more, read about the ClassMirror#metadata method.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...