メタデータで注釈が付けられた Dart クラスがあります。
class Awesome {
final String msg;
const Awesome(this.msg);
String toString() => msg;
}
@Awesome('it works!')
class Cool {
}
Cool
注釈が付けられているかどうか、もしそうなら、何が付けられているかを知りたいです。それ、どうやったら出来るの?
メタデータで注釈が付けられた Dart クラスがあります。
class Awesome {
final String msg;
const Awesome(this.msg);
String toString() => msg;
}
@Awesome('it works!')
class Cool {
}
Cool
注釈が付けられているかどうか、もしそうなら、何が付けられているかを知りたいです。それ、どうやったら出来るの?
ライブラリを使用して、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メソッドについてお読みください。