我想为我的dart codem创建一些自己的元数据,例如@table,@ column,但我找不到任何有用的文件。
但我确实发现angular.dart中有一些特殊的元数据(例如NgController):https://github.com/angular/angular.dart/blob/master/demo/todo/web/todo.dart#L52
如何在Dart中创建自己的元数据?有文件吗?
答案 0 :(得分:15)
Dart支持用于将用户定义的注释附加到程序结构的元数据。
元数据由一系列注释组成,每个注释以字符@开头,后跟一个以标识符开头的常量表达式。如果表达式不是以下之一,则为编译时错误:
元数据可以出现在库,部件标题,类,typedef,类型参数,构造函数,工厂,函数,字段,参数或变量声明之前以及导入,导出或部件指令之前。
因此,您建议@table
,@column
这些常量非常受功能限制,因为它们无法保存其他信息(参数)。
@DataTable("sale_orders")
class SaleOrder {
@DataColumn("sale_order_date")
DateTime date;
}
@table
class Product {
@column
String name;
}
const DataColumn column = const DataColumn();
const DataTable table = const DataTable();
class DataTable {
final String name;
const DataTable([this.name]);
}
class DataColumn {
final String name;
const DataColumn([this.name]);
}
但无论如何,您选择最适合您需求的选项。
答案 1 :(得分:8)
这是一篇关于Dart注释的有趣博客文章 http://japhr.blogspot.co.at/2013/01/i-love-dart-annotations.html
这里是Dart语言规范的元数据部分 https://www.dartlang.org/docs/spec/latest/dart-language-specification.html#h.d0rowtffuudf
元数据由一系列注释组成,每个注释以字符@开头,后跟一个以标识符开头的常量表达式。
因此,您可以使用带有const构造函数的类作为注释。